Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的解包函数_Python_Unpack - Fatal编程技术网

python中的解包函数

python中的解包函数,python,unpack,Python,Unpack,我试图理解Python中的解包函数以及它如何使用格式字符串 我使用格式字符串“I”作为示例,它对应于unsigned int(大小,4字节) 根据文档,解包函数将接受一个字符串,并将其转换为基于格式字符串的值列表 因此,我将输入值用作字符串“test”,下面是输出: >>> import struct >>> input="test" >>> l = struct.unpack("I", input)[0] >>> pri

我试图理解Python中的解包函数以及它如何使用格式字符串

我使用格式字符串“I”作为示例,它对应于unsigned int(大小,4字节)

根据文档,解包函数将接受一个字符串,并将其转换为基于格式字符串的值列表

因此,我将输入值用作字符串“test”,下面是输出:

>>> import struct
>>> input="test"
>>> l = struct.unpack("I", input)[0]
>>> print l
1953719668
我试图理解输出值是如何从输入中导出的

>>> from struct import *
>>> calcsize('I')
4
“I”的大小为4字节。 字符串“test”有4个字符,即4个字节。 我尝试将每个字符转换为其对应的十六进制ASCII值,并以小尾端顺序存储,但它与上面的输出不匹配


任何帮助都将不胜感激。

如果您想按原样打开字符串,请使用
4s

>>> struct.unpack('4s', 'test')[0]
'test'
1953719668由以下公式推导得出:(小端)


>>ord('t')+(ord('e')谢谢,我正在检查一个使用“I”作为输入字符串格式字符串的代码。您能详细说明一下格式字符串是如何应用于输入的吗?我想在little endian中应该是这样的:ord(t)、ord(s)、ord(e)、ord(t)。最高有效字节到最低有效字节。此外,如果输入的大小大于4字节(无符号int的大小),它将不会对其余字符应用格式字符串?@NeonFlash,ord('t')+(ord('e')@NeonFlash,格式的calcsize()大小)并且字符串的长度应该相同。或者,它将引发
struct.error
@NeonFlash,如果您只想解压无符号长字符串,请执行类似
struct.unpack('I',input_string[:4])
>>> ord('t') + (ord('e') << 8) + (ord('s') << 16) + (ord('t') << 24)
1953719668