Python 比较字符和十六进制
Python compare char to hex
>>> var = 'g'
>>> print hex(ord(var))
0x67
>>> print hex(ord(var)) == 0x67
False
为什么在 python 2.7 中不是这样?
将 'g' 与十六进制值 0x67 进行比较的最佳方法是什么?
hex(x)
Convert an integer number (of any size) to a lowercase
hexadecimal string prefixed with 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 在内部都是相同的数字
先看hex(ord(var))
的类型:
>>> print type(hex(ord(var)))
<type 'str'>
然后看0x67
的类型
>>> type(0x67)
<type 'int'>
您正在比较 str
和 int
。所以,你应该这样做:
hex(ord(var)) == '0x67'
hex
returns 一个字符串,您正在将其与数字进行比较。要么
ord(var) == 0x67
或
hex(ord(var)) == "0x67"
(第一个不太容易出错,因为它不区分大小写)
您可以简单地获取 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
>>> var = 'g'
>>> print hex(ord(var))
0x67
>>> print hex(ord(var)) == 0x67
False
为什么在 python 2.7 中不是这样?
将 'g' 与十六进制值 0x67 进行比较的最佳方法是什么?
hex(x)
Convert an integer number (of any size) to a lowercase hexadecimal string prefixed with
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 在内部都是相同的数字
先看hex(ord(var))
的类型:
>>> print type(hex(ord(var)))
<type 'str'>
然后看0x67
>>> type(0x67)
<type 'int'>
您正在比较 str
和 int
。所以,你应该这样做:
hex(ord(var)) == '0x67'
hex
returns 一个字符串,您正在将其与数字进行比较。要么
ord(var) == 0x67
或
hex(ord(var)) == "0x67"
(第一个不太容易出错,因为它不区分大小写)
您可以简单地获取 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