python pack以字符串格式输出

时间:2011-03-26 14:37:14

标签: python struct pack

我做了以下事情。

from struct import pack, unpack
t = 1234
tt = str(pack("<I", t))

打印tt给出\xf3\xe0\x01\x00。如何从tt中获取t的原始值?

我尝试使用解压缩repr(tt),但这不起作用。我该怎么做呢?

3 个答案:

答案 0 :(得分:7)

>>> t=1234
>>> tt=pack('<I', t)
>>> tt
'\xd2\x04\x00\x00'
>>> unpack('<I', tt)
(1234,)

>>> ttt, = unpack('<I', tt) 
>>> ttt
1234

答案 1 :(得分:1)

您使用了错误的程序包进行序列化。 struct包仅对与C代码交互的python代码有用。

要序列化为字符串,您应该使用pickle module

import pickle

t = 1234
tt = pickle.dumps(t)
t = pickle.loads(tt)

答案 2 :(得分:1)

unpack('<I', tt)会给你(1234,)

repr不起作用,因为它会在字符串中添加引号:

>>> repr('foo')
'"foo"'