比较两个十六进制数

2024-10-03 23:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,用来逐个字符比较两个字符串,并对其执行一些附加任务。我想修改它来比较十六进制数。在

例如:如果A = "hello"B = "himan"要进行比较。我曾经运行一个for循环,逐个字符比较。效果很好。在

for x, y in zip(A, B):
    if x == y:
        do something

如何修改它以考虑十六进制数。例如,如果A = "30303867"B = "3f160303",我想先将30与{}匹配,然后依此类推。通常,我只能通过3来匹配3,依此类推。 谢谢


Tags: 函数字符串inhelloforifzip字符
3条回答

如果我没听错的话,您有两个字符串A和{},但是您希望将这些字符串解释为十六进制数字对而不是字符。但不考虑这些数字的整数值。这相当于比较字符对,因为它们是十六进制数字,所以需要进行不区分大小写的比较,因为当考虑为十六进制值时,1F和1F相等。在

这将把你的字符串分割成成对的字符:

def digit_pairs(s):
    return [s[i:i+2].lower() for i in range(0,len(s),2)]

然后你就可以

^{pr2}$

不过,我不明白你反对转换成整数。你知道Python中的整数可以任意大吗?在

要将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

相关问题 更多 >