>>> var = 'g'
>>> print hex(ord(var))
0x67
>>> print hex(ord(var)) == 0x67
False
为什么在python 2.7中不是这样? 将'g'与十六进制值0x67进行比较的最佳方法是什么?
答案 0 :(得分:0)
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'>
您正在将str
与int
进行比较。所以,你应该这样做:
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