Tôi đang làm việc trên một chương trình nơi tôi lưu trữ một số dữ liệu trong một số nguyên và xử lý nó bitwise. Ví dụ: tôi có thể nhận được số 48, mà tôi sẽ xử lý từng bit. Nói chung, tính endian của các số nguyên phụ thuộc vào biểu diễn máy của số nguyên, nhưng Python có làm gì để đảm bảo rằng các INT sẽ luôn luôn là người cao su không? Hay tôi cần kiểm tra độ nội tâm như tôi trong C và sau đó viết mã riêng cho hai trường hợp? Show Tôi hỏi bởi vì mã của tôi chạy trên một máy mặt trời và mặc dù cái mà nó đang chạy hiện đang sử dụng bộ xử lý Intel, tôi có thể phải chuyển sang máy có bộ xử lý Sun trong tương lai, mà tôi biết là lớn. Được hỏi ngày 9 tháng 9 năm 2009 lúc 14:20Sep 9, 2009 at 14:20
Python's Đây là byte-by-byte, không bit; Không chắc chắn chính xác những gì bạn có nghĩa là xử lý từng bit trong bối cảnh này, nhưng tôi cho rằng nó có thể được hàm chứa tương tự. Để xử lý "số lượng lớn" nhanh trong các trường hợp đơn giản, cũng xem xét mô-đun mảng-các phương pháp Đã trả lời ngày 9 tháng 9 năm 2009 lúc 14:23Sep 9, 2009 at 14:23
Alex Martellialex MartelliAlex Martelli 825K163 Huy hiệu vàng1203 Huy hiệu bạc1381 Huy hiệu Đồng163 gold badges1203 silver badges1381 bronze badges 2 Nếu bạn cần xử lý dữ liệu của mình 'bitwise' thì mô -đun Mô -đun
Để kiểm tra tính endian của nền tảng theo chương trình, bạn có thể sử dụng
sẽ trả lại 1 hoặc 2.Đã trả lời ngày 9 tháng 9 năm 2009 lúc 14:27Sep 9, 2009 at 14:27
Scott Griffithsscott GriffithsScott Griffiths 20,9k8 Huy hiệu vàng54 Huy hiệu bạc84 Huy hiệu đồng8 gold badges54 silver badges84 bronze badges 2 Đoạn trích sau đây sẽ cho bạn biết nếu mặc định hệ thống của bạn là Little Endian (nếu không thì đó là Big-Endian)
Tuy nhiên, lưu ý, điều này sẽ không ảnh hưởng đến hành vi của các toán tử bitwise: 3 bằng với 4 bất kể tính cuối cùng mặc định của hệ thống của bạn.Đã trả lời ngày 12 tháng 12 năm 2013 lúc 5:18Dec 12, 2013 at 5:18
Kiểm tra khi nào? Khi thực hiện các hoạt động bitwise, INT IN sẽ có cùng một nữ tính như INT bạn đặt vào. Bạn không cần phải kiểm tra điều đó. Bạn chỉ cần quan tâm đến điều này khi chuyển đổi sang/từ các chuỗi byte, bằng cả hai ngôn ngữ, afaik. Trong Python, bạn sử dụng mô -đun cấu trúc cho điều này, phổ biến nhất là struct.pack () và struct.unpack (). Đã trả lời ngày 9 tháng 9 năm 2009 lúc 14:28Sep 9, 2009 at 14:28
Lennart Regebrolennart RegebroLennart Regebro 162K41 Huy hiệu vàng221 Huy hiệu bạc251 Huy hiệu Đồng41 gold badges221 silver badges251 bronze badges 3 Làm thế nào để bạn chuyển đổi sang Little Endian trong Python?Để làm cho công việc này với các số nguyên âm, bạn cần che giấu đầu vào của mình với độ dài đầu ra loại int ưa thích của bạn.Ví dụ: -16 như một endian endian32_t nhỏ sẽ là bytearray.FromHex (hex (-16 & (2 ** 32-1)) [2:]) [::-1], đánh giá thành bytearray (b '\ xf0 \ xff \ xff \ xff').mask your input with your preferred int type output length. For example, -16 as a little endian uint32_t would be bytearray. fromhex(hex(-16 & (2**32-1))[2:])[::-1] , which evaluates to bytearray(b'\xf0\xff\xff\xff') .
Windows 10 là lớn hay nhỏ endian?Các nền tảng sau được coi là endian nhỏ: AXP/VMS, Digital Unix, Intel ABI, OS/2, VAX/VMS và Windows.Trên các nền tảng lớn, giá trị 1 được lưu trữ trong nhị phân và được thể hiện ở đây trong ký hiệu thập lục phân.little endian: AXP/VMS, Digital UNIX, Intel ABI, OS/2, VAX/VMS, and Windows. On big endian platforms, the value 1 is stored in binary and is represented here in hexadecimal notation.
Thứ tự byte trong Python là gì?Đối số byteorder xác định thứ tự byte được sử dụng để thể hiện số nguyên.Nếu byteorder là "lớn", byte quan trọng nhất là ở đầu mảng byte.Nếu byteorder là "ít", byte quan trọng nhất là ở cuối mảng byte.. If byteorder is "big" , the most significant byte is at the beginning of the byte array. If byteorder is "little" , the most significant byte is at the end of the byte array.
Hầu hết các máy tính sử dụng endian lớn hay ít?Cho đến nay, thứ tự phổ biến nhất của nhiều byte trong một số là Little-endian, được sử dụng trên tất cả các bộ xử lý Intel.little-endian, which is used on all Intel processors. |