在python中附加2个十六进制值不起作用
假设我有两个给定的十六进制值,它们是str作为数据类型:在python中附加2个十六进制值不起作用,python,Python,假设我有两个给定的十六进制值,它们是str作为数据类型: a = 0x15 b = 0x18 现在我想附加它们,因此我有: 0x1518 通常的方法是将值强制转换为int,以便能够追加,如: (hex( (int(a)<<8) | int(b) )) 我做错了什么?您运行的代码不是您发布的代码。(你发布的内容,效果很好) 你的“a”不是你想象的那样。您试图将字符串“0x15”馈送给int()函数,它理所当然地向您抱怨这不是以10为基数的整数 修复变量类型并去掉int()调用。您
a = 0x15
b = 0x18
现在我想附加它们,因此我有:
0x1518
通常的方法是将值强制转换为int,以便能够追加,如:
(hex( (int(a)<<8) | int(b) ))
我做错了什么?您运行的代码不是您发布的代码。(你发布的内容,效果很好)
你的“a”不是你想象的那样。您试图将字符串“0x15”馈送给int()函数,它理所当然地向您抱怨这不是以10为基数的整数
修复变量类型并去掉int()调用。您需要告诉
int
数字以16为基数:
hex((int(a, 16) << 8) | int(b, 16))
hex((int(a,16)a和b已经是int值了,您不必强制转换它们
hex_value = hex(a << 8 | b)
hex\u value=hex(a你发布的代码工作正常。我不知道你从哪里得到错误
在旁注中,a
和b
不是字符串;它们已经是int
类型,因此不需要键入cast。您可以验证这一点:
>>> a = 0x15
>>> type(a)
<class 'int'>
>a=0x15
>>>类型(a)
删除不必要的类型转换您得到的(hex(aa
已经是int
的可能副本,我没有错误。在Thonny中使用python 3.6,当我键入类型(a)时,我得到“str”。这个值是从str数据类型中的其他模块接收的。为了进一步使用,我需要将它转换为字符串。
hex_value = '0x{:04x}'.format(a << 8 | b)
>>> a = 0x15
>>> type(a)
<class 'int'>