"L"
,"LLL"
之间有什么区别?我认为在L中,结果转换为long,结果为5,在LLL中,结果转换为long,结果为555?
导入结构 data = 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)
答案 0 :(得分:0)
结果的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个字节。
编码记录here。如果您使用32位Python与64位Python,您可能会得到不同的答案 - Windows与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']