Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较两个十六进制数_Python_Hex_String Comparison - Fatal编程技术网

Python 比较两个十六进制数

Python 比较两个十六进制数,python,hex,string-comparison,Python,Hex,String Comparison,我有一个函数,我使用它逐个字符比较两个字符串,并对其执行一些附加任务。我想修改它来比较十六进制数 例如:如果要比较A=“hello”,B=“himan”。我曾经为循环运行,并逐个字符进行比较。它工作得很好 for x, y in zip(A, B): if x == y: do something 我如何修改它来考虑十六进制数。例如,如果A=“30303867”和B=“3f160303”,我想首先将30与3f匹配,依此类推。通常,我只能通过3等匹配3。 感谢要将Pyth

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

例如:如果要比较
A=“hello”
B=“himan”
。我曾经为循环运行
,并逐个字符进行比较。它工作得很好

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中的整数可以任意大吗

我宁愿不要将输入转换为整数。这在我的例子中并不总是可能的。如果这些值是十六进制字符串,
int(hex\u string,16)
将起作用。可以在davideej找到进一步的解释,我可以知道原因吗?如果无法将它们转换为
int
,那么问题与比较
hex
值无关,而只是比较字符串。@machnic我需要一个通用解决方案,因为输入也可以是字符串。您必须确保
a
是两个字符串中最小的一个。最好使用
min(len(A),len(B))
作为停止值。为了进行健全性检查,如果字符串不相等,最好抛出错误,说
“字符串不相等,无法完全比较”
谢谢。这与我所追求的非常接近。关于整数,对于输入不能转换为整数的情况,我不希望转换为更通用的解决方案。