Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中附加2个十六进制值不起作用_Python - Fatal编程技术网

在python中附加2个十六进制值不起作用

在python中附加2个十六进制值不起作用,python,Python,假设我有两个给定的十六进制值,它们是str作为数据类型: a = 0x15 b = 0x18 现在我想附加它们,因此我有: 0x1518 通常的方法是将值强制转换为int,以便能够追加,如: (hex( (int(a)<<8) | int(b) )) 我做错了什么?您运行的代码不是您发布的代码。(你发布的内容,效果很好) 你的“a”不是你想象的那样。您试图将字符串“0x15”馈送给int()函数,它理所当然地向您抱怨这不是以10为基数的整数 修复变量类型并去掉int()调用。您

假设我有两个给定的十六进制值,它们是str作为数据类型:

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(a
a
已经是
int
的可能副本,我没有错误。在Thonny中使用python 3.6,当我键入类型(a)时,我得到“str”。这个值是从str数据类型中的其他模块接收的。为了进一步使用,我需要将它转换为字符串。
hex_value = '0x{:04x}'.format(a << 8 | b)
>>> a = 0x15
>>> type(a)
<class 'int'>