为了账号安全,请及时绑定邮箱和手机立即绑定

如何将python的整数列表转换为十六进制列表

如何将python的整数列表转换为十六进制列表

缥缈止盈 2021-07-30 18:55:24
我有一个列表,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']


查看完整回答
反对 回复 2021-08-03
?
慕标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']


查看完整回答
反对 回复 2021-08-03
?
跃然一笑

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 的特殊字符的字符串的表示。


你想以十六进制表示输出你的数字吗?


在这种情况下,请参阅其他答案。


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 1413 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信