"L"
, "LLL"
有什么区别?我认为在l中,结果转换为长,结果为5,在lll中,结果转换为长,结果为555?
导入结构数据= 5
-
Result = struct.pack("L", data)
-
Result = struct.pack("LLL", data, data, data)
我试图通过以下代码来了解这些输出的样子,但这只是导致不可读的随机炭
import struct
data = 5
Result1 = struct.pack("L", data)
Result2 = struct.pack("LLL", data, data, data)
print (Result1)
print (Result2)
可能比内容更揭示的是结果的len
:
import struct
data = 5
Result1 = struct.pack("L", data)
Result2 = struct.pack("LLL", data, data, data)
print len(Result1)
print len(Result2)
输出:
$ python p.py
8
24
包装数据将其包装成str
的二进制格式。每个long
编码为8个字节。当您编码3个long时,您将获得3*8 = 24字节。
此处记录了编码。如果您使用的是32位Python vs 64位Python,则可能会得到不同的答案 - Windows vs. Linux也可能会给出不同的结果。
如果要将数据视为十六进制字符串:
>>> map(hex, map(ord, struct.pack("L", 255)))
['0xff', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']
或
>>> struct.pack("L", 255).encode('hex_codec')
'ff00000000000000'
或二进制
>>> map(bin, map(ord, struct.pack("L", 255)))
['0b11111111', '0b0', '0b0', '0b0', '0b0', '0b0', '0b0', '0b0']