我有一个列表,a=[0,1]我想改变 a=[0x00,0x001]类型。我怎样才能做到这一点?我试过这种方式print (struct.pack('>h',a))但我不能改成十六进制
3 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
直接使用 hex 应该可以工作:
>>> a = [0,1]
>>> a = [hex(i) for i in a]
>>> a
['0x0', '0x1']
慕标5832272
TA贡献1966条经验 获得超4个赞
使用hex(...)只会给你最少的前导 0:
print( [hex(i) for i in [0,1]]) # ['0x1', '0x2']
您可以将字符串格式化(...)为十六进制和zfill()所需数量的零并'0x'自己添加到它:
data = [0,1]
as_hex = [ "0x" + format(e,"x").zfill(2) for e in data]
print(as_hex)
输出:
['0x00', '0x01']
跃然一笑
TA贡献1826条经验 获得超6个赞
由于你没有描述你想要的结果是什么,我只能猜测:
你想把一些数字打包成一个字符串吗?
那么无论您使用哪种格式,只要您使用正确的格式字符串,两者都应该可以工作:
a = [1, 2]
b = [0x01, 0x02]
struct.pack(">hh", *a)
# > '\x00\x01\x00\x02'
struct.pack(">hh", *b)
# > '\x00\x01\x00\x02'
这是因为a和b是相等的:它并不重要,如果你写的1和2或者如果你喜欢0x01RESP。0x02. 请注意,显示的字符串只是包含值分别为 0、1 和 2 的特殊字符的字符串的表示。
你想以十六进制表示输出你的数字吗?
在这种情况下,请参阅其他答案。
添加回答
举报
0/150
提交
取消