Когда я пытался запустить эту же программу на моем компьютере и сервере моей школы, я получаю эти два различных поведения от struct.pack(...)
.
Это от моего компьютера
Python 3.7.0 (default, Oct 9 2018, 10:31:47)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import struct
>>> struct.pack('HL',0,123456)
b'\x00\x00\x00\x00\x00\x00\x00\x00@\xe2\x01\x00\x00\x00\x00\x00'
Это с моего школьного сервера
Python 3.7.0 (default, Aug 1 2018, 14:55:42)
[GCC 4.8.4] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import struct
>>> struct.pack('HL',0,123)
b'\x00\x00\x00\x00\x00\x00\x00{'
Как видите, длина вывода в обеих системах различна по причинам, не связанным с версией Python. Есть ли способ заставить или заставить вывод иметь длину 8 или 16 байтов? Формат HL
на самом деле имеет длину всего 6 байтов, но на школьном сервере он расширяется до 8 байтов. На моем локальном компьютере «HL» почему-то расширяется до 16 байт.
Это поведение является критическим, потому что мне нужно передать эту функцию позже на struct.unpack(...)
, что потребовало бы вводов различной длины в зависимости от длины вывода от struct.pack(...)
.