我做了以下事情。
from struct import pack, unpack
t = 1234
tt = str(pack("<I", t))
打印tt给出\xf3\xe0\x01\x00
。如何从tt中获取t
的原始值?
我尝试使用解压缩repr(tt)
,但这不起作用。我该怎么做呢?
答案 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"'