Có tùy chọn nào để tìm xem hệ thống của tôi có phải là thứ tự byte nhỏ hoặc byte cuối lớn bằng Perl không?Tìm xem hệ thống có ít endian hoặc endian lớn với perl
11
A
Trả lời
20
perl -MConfig -e 'print "$Config{byteorder}\n";'
Xem Perl documentation.
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
- 1. Làm thế nào để kiểm tra xem một hệ thống là endian lớn hay ít endian?
- 2. C# nhỏ endian hoặc lớn endian?
- 3. Lẫn lộn trong htons- ít endian/endian lớn
- 4. Big endian hoặc Little endian trên mạng?
- 5. Chuyển đổi các giá trị float từ lớn endian sang ít endian
- 6. (java) Viết trong tập tin ít endian
- 7. 64 Bit "mạng" (lớn-endian) để Integer trong Perl
- 8. Làm thế nào để chuyển đổi một cấu trúc lớn-endian thành một cấu trúc endian nhỏ?
- 9. giải mã, ít endian, uncompressed và phao mảng
- 10. Làm thế nào để viết ByteBuffer cuối cùng lớn đến ít endian trong Java
- 11. ByteBuffer Little Endian chèn không hoạt động
- 12. unicode endian puzzled me
- 13. Nút.JS Big-Endian UCS-2
- 14. tăng asio và endian
- 15. Có cách nào để biên dịch và chạy chương trình như big-endian trên máy tính nhỏ endian?
- 16. Chi tiết về Endian-ness và .Net?
- 17. Làm thế nào tôi có thể đóng gói một int như 32 bit lớn endian trong Perl?
- 18. Python file Slurp w/chuyển đổi endian
- 19. làm thế nào để chuyển đổi số lớn-endian để số bản địa delphi
- 20. C# - Trình đọc nhị phân trong Big Endian?
- 21. Làm thế nào để có được ít dữ liệu cuối cùng từ endian lớn trong C# sử dụng phương thức bitConverter.ToInt32?
- 22. hệ thống đăng nhập ít mật khẩu
- 23. Hệ thống tệp ảo trong Perl
- 24. Hệ thống Perl có thể gọi bao giờ chết không?
- 25. Một hệ thống xếp hàng cho Perl
- 26. Làm thế nào tôi có thể tìm thấy Endian-ness của PC của tôi bằng lập trình bằng C?
- 27. Shell nào sử dụng hệ thống Perl()?
- 28. R giải quyết: hệ thống là chính xác số ít
- 29. Cách nhanh hơn để tìm hiểu xem người dùng có tồn tại trên hệ thống không?
- 30. Hệ thống tệp giả cho thử nghiệm đơn vị Perl
+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 –
Đú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
@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. –