2024-05-15 08:34:52 发布
网友
pack从输入值返回压缩结果。
In [19]: pack("i",4) Out[19]: '\x04\x00\x00\x00'
我试着把打包的结果打印出来如下:
val = pack("i", 4) print "%d" % int(val[0])
但是,我得到了ValueError:
ValueError: invalid literal for int() with base 10: '\x04'
如何打印打包值?
问题是十六进制值转换,我不得不使用ord()方法。int()方法仅适用于以10为基数的字符串中的数字。
In [33]: int('4') Out[33]: 4 In [34]: ord('\x34') Out[34]: 52 In [35]: ord('4') Out[35]: 52 In [36]: ord('\x10') Out[36]: 16
所以,这个代码是有效的。
val = pack("i", 4) print "%d" % ord(val[0]) # -> 4
或者
print "%s" % hex(ord(val[0])) # -> 0x4
>>> import struct >>> print struct.unpack("i", struct.pack("i",4))[0] 4
基于:http://docs.python.org/2/library/struct.html
Python将结构打包为字节字符串,打印: print "%d" % int(val[0]) 将打印字节字符串的第一个字符(不是整数的字符)。
print "%d" % int(val[0])
你看起来很像struct.unpack(fmt,string)来自http://docs.python.org/2/library/struct.html。
i = pack("i",'\x04\x00\x00\x00') print i
问题是十六进制值转换,我不得不使用ord()方法。int()方法仅适用于以10为基数的字符串中的数字。
所以,这个代码是有效的。
或者
基于:http://docs.python.org/2/library/struct.html
Python将结构打包为字节字符串,打印:
print "%d" % int(val[0])
将打印字节字符串的第一个字符(不是整数的字符)。你看起来很像struct.unpack(fmt,string)来自http://docs.python.org/2/library/struct.html。
相关问题 更多 >
编程相关推荐