比较两个十六进制数
Compare two hex numbers
我有一个函数可以用来逐个字符地比较两个字符串,并对其执行一些额外的任务。我想修改它来比较十六进制数。
例如:如果要比较A = "hello"
,B = "himan"
。我曾经 运行 一个 for
循环并逐字符比较。效果很好。
for x, y in zip(A, B):
if x == y:
do something
如何修改它以考虑十六进制数字。例如,如果 A = "30303867"
和 B = "3f160303"
,我想先将 30
与 3f
匹配,然后依此类推。正常情况下,我只能用3
来匹配3
等等。
谢谢
要获取 Python 中整数的十六进制数字作为字符串,您可以使用 '{:x}'.format(number)
。格式说明符中的 :x
表示 十六进制格式 (不带 0x)。
那么就可以使用十六进制表示的字符串代码了
(旁注:这也可以用 printf 风格的格式完成 %x
)
由于您不想转换为整数,因此您可以做的最简单的事情是一次遍历每个字符串两个。
for i in range(0, min(len(A),len(B)), 2):
if A[i:i+2] == B[i:i+2]:
# Do Something
如果我没理解错的话,你有两个字符串 A
和 B
,但你不想将这些字符串解释为字符,而是解释为十六进制数字对。但不考虑这些数字的整数值。这相当于比较字符对,因为它们是十六进制数字,所以您需要进行不区分大小写的比较,因为当被视为十六进制值时,1F 和 1f 是相等的。
这会将您的字符串拆分为字符对:
def digit_pairs(s):
return [s[i:i+2].lower() for i in range(0,len(s),2)]
然后你可以做
for a, b in zip(digit_pairs(A),digit_pairs(B)):
if a == b:
do something
不过,我不明白您反对转换为整数。您是否知道 Python 中的整数可以任意大?
我有一个函数可以用来逐个字符地比较两个字符串,并对其执行一些额外的任务。我想修改它来比较十六进制数。
例如:如果要比较A = "hello"
,B = "himan"
。我曾经 运行 一个 for
循环并逐字符比较。效果很好。
for x, y in zip(A, B):
if x == y:
do something
如何修改它以考虑十六进制数字。例如,如果 A = "30303867"
和 B = "3f160303"
,我想先将 30
与 3f
匹配,然后依此类推。正常情况下,我只能用3
来匹配3
等等。
谢谢
要获取 Python 中整数的十六进制数字作为字符串,您可以使用 '{:x}'.format(number)
。格式说明符中的 :x
表示 十六进制格式 (不带 0x)。
那么就可以使用十六进制表示的字符串代码了
(旁注:这也可以用 printf 风格的格式完成 %x
)
由于您不想转换为整数,因此您可以做的最简单的事情是一次遍历每个字符串两个。
for i in range(0, min(len(A),len(B)), 2):
if A[i:i+2] == B[i:i+2]:
# Do Something
如果我没理解错的话,你有两个字符串 A
和 B
,但你不想将这些字符串解释为字符,而是解释为十六进制数字对。但不考虑这些数字的整数值。这相当于比较字符对,因为它们是十六进制数字,所以您需要进行不区分大小写的比较,因为当被视为十六进制值时,1F 和 1f 是相等的。
这会将您的字符串拆分为字符对:
def digit_pairs(s):
return [s[i:i+2].lower() for i in range(0,len(s),2)]
然后你可以做
for a, b in zip(digit_pairs(A),digit_pairs(B)):
if a == b:
do something
不过,我不明白您反对转换为整数。您是否知道 Python 中的整数可以任意大?