2

我做了以下事情。

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

打印 tt 给出\xf3\xe0\x01\x00. 我如何t从 tt 获得原始价值?

我尝试使用解包,repr(tt)但没有成功。我该怎么做呢?

4

3 回答 3

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

>>> ttt, = unpack('<I', tt) 
>>> ttt
1234
于 2011-03-26T14:42:05.937 回答
1

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

要序列化为字符串,您应该使用pickle模块.

import pickle

t = 1234
tt = pickle.dumps(t)
t = pickle.loads(tt)
于 2011-03-26T14:41:55.007 回答
1

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

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

>>> repr('foo')
'"foo"'
于 2011-03-26T14:42:08.390 回答