Python将char与hex进行比较

时间:2015-11-01 14:07:06

标签: python compare hex

>>> var = 'g'  
>>> print hex(ord(var))  
0x67  
>>> print hex(ord(var)) == 0x67  
False

为什么在python 2.7中不是这样? 将'g'与十六进制值0x67进行比较的最佳方法是什么?

4 个答案:

答案 0 :(得分:0)

根据documentation

  

hex(x)

     

将整数(任意大小)转换为小写   前缀为0x

的十六进制字符串

所以hex(ord(var)) == '0x67'

print删除引号。

>>> var = 'g'
>>> hex(ord(var))
'0x67'
>>> hex(0x67)
'0x67'
>>> hex(ord(var)) == hex(0x67)
True

当然ord(g) == 0x67因为数字相等尽管表示,但0x67和103和0147在内部都是相同的数字

答案 1 :(得分:0)

首先查看hex(ord(var))的类型:

>>> print type(hex(ord(var)))
<type 'str'> 

然后查看0x67

的类型
>>> type(0x67)
<type 'int'>

您正在将strint进行比较。所以,你应该这样做:

hex(ord(var)) == '0x67'

答案 2 :(得分:0)

hex返回一个字符串,您将其与一个数字进行比较。 <或者

ord(var) == 0x67

hex(ord(var)) == "0x67"

(第一个不容易出错,因为它不区分大小写)

答案 3 :(得分:0)

您可以简单地将ord与0x67进行比较

>>> ord('g') == 0x67
True

如果你这样做:

>>> 0x67
103

您仍在获取该角色的ascii代码。

此外,根据您的显式示例,如果您尝试将其强制转换为int以实际比较为0x67,那么您需要在base-16中执行此操作:

>>> int(hex(ord('g')), 16) == 0x67
True

错误案例:

>>> int(hex(ord('d')), 16) == 0x67
False