Python-将原始十六进制转换为类型'int'

问题描述 投票:0回答:1

我有一个来自COM端口的原始十六进制,我想表示为十六进制值,以后可以用于按位操作。

例如,我有1035,但我希望它为0x1035。

我相对确定hex()函数不是我想要的。这会将int(1035)转换为十六进制40B。

我尝试将'0x'连接到我的值,我发现的问题是,然后输入str,我不能按位&,|等。将其转换为int会导致:以10为底的int()无效文字:'0x1035'

我已经尝试将十六进制转换为二进制,但与以前使用str类型而不是int类型相同。

例如,当我定义时,生活变得容易得多,例如十六进制= 0x1035。但我希望此功能可用于来自com端口的许多消息。

如何将字符串“ 0x1035”转换为十六进制整数?或者,如何告诉解释器我想要将int 1035解释为十六进制0x1035?

python string int hex
1个回答
0
投票

在此之上的一些好的评论指向了很好的参考。 2件事值得一提。当您说“从端口获取原始十六进制”时,我假设当您将这些数字提取到python中时,数据类型是表示十六进制值的string。如果是这样,您可以将其转换]

In [17]: input_data = ['10', '1035', 'FF', 'A']                                 

In [18]: hex_data = [int(t, 16) for t in input_data]                            

In [19]: hex_data                                                               
Out[19]: [16, 4149, 255, 10]

现在python将这些内容存储为整数值,您可以对它们进行按位运算,这显然是以base-2表示形式执行的。然后,您可以根据需要表达输出。内存中存在相同的基础数字... python可以用很多基数来表示它。

In [20]: d1 = 'A'                                                               

In [21]: d2 = '3'                                                               

In [22]: d1 = int(d1, 16)                                                       

In [23]: d2 = int(d2, 16)                                                       

In [24]: d1                                                                     
Out[24]: 10

In [25]: d2                                                                     
Out[25]: 3

In [26]: d1&d2                                                                  
Out[26]: 2

In [27]: # let's check...                                                       

In [28]: bin(d1)                                                                
Out[28]: '0b1010'

In [29]: bin(d2)                                                                
Out[29]: '0b11'

In [30]: # looks right.....  (it is)    
© www.soinside.com 2019 - 2024. All rights reserved.