簡體   English   中英

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返回一個字符串,您將其與一個數字進行比較。 要么做

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'>

您正在將strint進行比較。 所以,你應該這樣做:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM