Tôi muốn chuyển đổi một giá trị số nguyên thành một chuỗi giá trị hex, trong endian nhỏ. Ví dụ, 0 Show Nội dung chính Hiển thị
Tất cả googlefu của tôi đang tìm kiếm cho tôi là 1 mang lại cho tôi 2, đây không phải là điều tôi muốnTôi có thể có thể tách chuỗi đó theo cách thủ công và tạo chuỗi tôi muốn nhưng tôi hy vọng ai đó có thể chỉ cho tôi một tùy chọn tốt hơn đã hỏi 30 tháng 10 năm 2012 lúc 15. 01 2 Bạn cần sử dụng mô-đun 3
Ở đây 4 biểu thị little-endian và 0 mà chúng tôi muốn đóng gói một long dài không dấu (8 byte)Lưu ý rằng Python sẽ sử dụng các ký tự ASCII cho bất kỳ byte nào nằm trong phạm vi ASCII có thể in được để biểu thị chuỗi byte kết quả, do đó, các phần 1, 2 và 3 của kết quả trên
đã trả lời 30 tháng 10 năm 2012 lúc 15. 03 Martijn Pieters ♦Martijn Pieters 985k273 huy hiệu vàng3874 huy hiệu bạc3235 huy hiệu đồng 6 Tôi biết nó là một chủ đề cũ, nhưng nó vẫn hữu ích. Đây là hai xu của tôi khi sử dụng python3
Vì vậy, điều quan trọng là chuyển đổi nó thành một mảng phụ và đảo ngược nó. Trong một dòng
Tái bút. Bạn có thể coi dữ liệu "bytearray" như "byte" và thậm chí trộn chúng với 4Cập nhật. Như Will chỉ ra trong các nhận xét, bạn cũng có thể quản lý các số nguyên âm
đã trả lời 2 tháng 12 năm 2018 lúc 1. 58 Rutrus Rutrus 1.21713 huy hiệu bạc24 huy hiệu đồng 1 Tổng quanThế giới điện toán chủ yếu xử lý dữ liệu ở hai định dạng
Trong khi hầu hết các máy xử lý dữ liệu ở Định dạng Little Endian thì đường truyền mạng và Internet đang sử dụng Định dạng Big Endian. Do đó, trước khi gửi dữ liệu đến mạng và sau khi nhận dữ liệu từ mạng, việc dịch sang Thứ tự mạng, tức là, sang Thứ tự Big Endian và ngược lại là một nhiệm vụ thường xuyên Lưu ý rằng, thời gian chạy Java sử dụng Định dạng Big Endian. Độ bền của Python giống như bộ xử lý mà trình thông dịch Python chạy trong đó Mô-đun ổ cắm của Python cung cấp các chức năng để xử lý các bản dịch của các số nguyên có kích thước khác nhau từ Little Endian sang Big Endian và ngược lại Giải thích về Little Endian và Big EndianSố nguyên 32 bit có bốn byte, mỗi byte bao gồm 8 bit Trong Định dạng Little Endian, byte quan trọng nhất (LSB) sẽ được đặt ở địa chỉ thấp nhất và byte quan trọng nhất (MSB) sẽ được đặt ở địa chỉ cao nhất Ví dụ: nếu địa chỉ bắt đầu là X, thì byte có trọng số thấp nhất sẽ được đặt trong X và byte có trọng số thấp nhất tiếp theo sẽ được đặt trong X+1, byte có trọng số nhỏ nhất tiếp theo là X+2 và byte có trọng số lớn nhất sẽ là . Trong Little Endian, LSB được lưu trữ ở địa chỉ nhỏ nhất Ở định dạng Big Endian, byte quan trọng nhất sẽ được đặt ở địa chỉ thấp nhất và byte ít quan trọng nhất sẽ được đặt ở địa chỉ cao nhất Ví dụ: nếu địa chỉ bắt đầu là X, byte quan trọng nhất sẽ được đặt trong X và byte quan trọng nhất tiếp theo sẽ được đặt trong X+1, byte quan trọng nhất tiếp theo tại X+2 và byte ít quan trọng nhất sẽ là . MSB được lưu trữ tại địa chỉ nhỏ nhất Cái tên "Endian" xuất phát từ tiểu thuyết "Gulliver's Travels" của Jonathan Swift, trong đó một số người thích ăn trứng luộc từ đầu nhỏ trong khi những người khác ăn chúng từ đầu to Truyền thông mạng hoạt động như thế nàoTrong các mạng máy tính, trong khi truyền và nhận các gói dữ liệu, chúng được gửi bằng Big Endian Order. Lý do là, giao thức mạng phù hợp với bất kỳ hệ điều hành nào gửi các khung và trường dữ liệu của chúng ở định dạng này như được xác định bởi RFC 1700 RFC 1700, có tiêu đề CON SỐ ĐƯỢC CHỈ ĐỊNH nêu rõ "các số thể hiện ở dạng thập phân và dữ liệu hình ảnh theo thứ tự" lớn-endian"" Tuy nhiên, một số hệ điều hành và máy xử lý dữ liệu ở Định dạng Little Endian. Vì vậy, khi máy chủ đang theo Định dạng Little Indian, dữ liệu nhận được qua mạng cần được dịch sang Định dạng Little Indian hoặc Định dạng Máy chủ Hàm sắp xếp byteMô-đun ổ cắm của Python cung cấp các chức năng để dịch thứ tự máy chủ sang thứ tự mạng và ngược lại Tên hàm Python Sự mô tả hướng dịch ổ cắm. ntohl(Int32bit_postive)
Big Endian đến Little Endian ổ cắm. ntohs(Int32bit_postive)
Big Endian đến Little Endian ổ cắm. htonl(Int32bit_postive)
Little Endian đến Big Endian ổ cắm. htons(Int16bit_postive)
Little Endian đến Big Endian Thí dụổ cắm nhập khẩu Int32Bit = 214748300 Int16Bit = 400 #Chuyển đổi số nguyên 32 bit từ thứ tự byte mạng sang thứ tự byte lưu trữ Int32InHostFormat = ổ cắm. ntohl(Int32Bit) #Chuyển đổi số nguyên 16 bit từ thứ tự byte mạng sang thứ tự byte lưu trữ Int16InHostFormat = ổ cắm. ntohs(Int16Bit) print("Số nguyên 32 bit {} được chuyển đổi từ Thứ tự Byte Mạng thành Thứ tự Byte Máy chủ. {}". định dạng (Int32Bit, Int32InHostFormat)) print("Số nguyên 16 bit {} được chuyển đổi từ Thứ tự Byte Máy chủ thành Thứ tự Byte Mạng. {}". định dạng (Int16InHostFormat, Int16InNetworkFormat)) |