[英]Python compare char to hex
>>> var = 'g'
>>> print hex(ord(var))
0x67
>>> print hex(ord(var)) == 0x67
False
為什么這在 python 2.7 中不是這樣?
將“g”與十六進制值 0x67 進行比較的最佳方法是什么?
hex
返回一個字符串,您將其與一個數字進行比較。 要么做
ord(var) == 0x67
或者
hex(ord(var)) == "0x67"
(第一個不太容易出錯,因為它不區分大小寫)
根據文檔
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 在內部都是相同的數字
首先查看hex(ord(var))
:
>>> print type(hex(ord(var)))
<type 'str'>
然后看0x67
的類型
>>> type(0x67)
<type 'int'>
您正在將str
與int
進行比較。 所以,你應該這樣做:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.