错误在Python中打包和解包字节

时间:2017-07-27 21:22:41

标签: python struct python-2.x

输入值后,我的代码出错(参见下面的代码)。我可以打包,但解包不起作用。有什么建议?我不完全了解包装和拆包,文档有点令人困惑。

import struct


#binaryadder - 
def binaryadder(input):
    input = int(input)
    d = struct.pack("<I", input)
    print d
    print type(d)
    d = struct.unpack("<I",input)
    print d 
#Test Pack 

count = 0
while True:
    print "Enter input"
    a = raw_input()
    binaryadder(a)
    count = count + 1
    print "While Loop #%s finished\n" % count 

输入字符串后,此代码会抛出以下错误:

Enter input
900
ä
<type 'str'>
Traceback (most recent call last):
  File "C:\PythonPractice\Binarygenerator.py", line 25, in <module>
    binaryadder(a)
  File "C:\PythonPractice\Binarygenerator.py", line 17, in binaryadder
    d = struct.unpack("<I",input)
struct.error: unpack requires a string argument of length 4

1 个答案:

答案 0 :(得分:1)

d = struct.pack("<I", input)

这将输入打包成字符串;因此输入的数字900将打包到字符串'\x84\x03\x00\x00'中。

然后,稍后,你这样做:

d = struct.unpack("<I",input)

现在您尝试解压缩 相同的输入,该输入仍为900。显然,这不起作用,因为你需要解压缩字符串。在您的情况下,您可能想要解压缩d这是您之前打包的内容。所以试试这个:

unpacked_d = struct.unpack("<I", d)
然后

unpacked_d应包含input的数字。