2010-04-09 19 views

Trả lời

20
perl -MConfig -e 'print "$Config{byteorder}\n";' 

Xem Perl documentation.

+1

+1 Đây rõ ràng là cách "đúng" để thực hiện. Cách khác là (trong khi trực quan) chỉ cần hacky. :-P –

+0

Đúng, mặc dù để có được một câu trả lời boolean cho câu hỏi "là hệ thống này lớn/nhỏ-endian?" bạn cần phân tích thêm về giá trị được mô-đun cấu hình trả về. – Sean

+3

@Sean: sự cố là (như tài liệu tham chiếu chỉ ra), câu trả lời không phải là nhị phân - cũng có thứ tự 'lạ' (theo lý thuyết) cho các máy như PDP-11 sử dụng '3412' làm thứ tự byte - đó không phải là người lớn hay người nhỏ. Nếu byte đầu tiên là 1, bạn có thể giả định (với độ an toàn vừa phải) rằng nó là ít endian; nếu nó là 4 hoặc 8, bạn có thể giả định lớn endian; và nếu nó không phải là một trong số này, thì có lẽ đã đến lúc để có được một cỗ máy mới hơn. –

4

Tôi đoán bạn có thể làm:

$big_endian = pack("L", 1) eq pack("N", 1); 

này có thể thất bại nếu hệ thống của bạn có một không chuẩn (không phải lớn về cuối nhỏ cũng không ít về cuối nhỏ) byte đặt hàng (ví dụ PDP-11).

+0

Đó cũng sẽ là đề nghị của tôi. :) Ngoại trừ tôi sẽ sử dụng một cái gì đó với nhiều bit đầy hơn chỉ nhị phân 1. – Axeman

Các vấn đề liên quan