在Python中迭代两个十六进制值之间的增量

12

我正在学习Python(虽然进展缓慢),但需要编写一个程序,其中包括在两个十六进制值之间递增,例如30D681和3227FF。

我很难找到最好的方法来做到这一点。到目前为止,我在这里看到了一段代码片段,它将十六进制分解成30、D6和81,然后运作如下 -

char = 30
 char2 = D6
  char3 = 81

 def doublehex():
    global char,char2,char3
    for x in range(255):
        char = char + 1
        a = str(chr(char)).encode("hex")
        for p in range(255):
           char2 = char2 + 1
           b = str(chr(char2)).encode("hex")
        for y in range(255):
           char3 = char3 + 1
           b = str(chr(char2)).encode("hex")
           c = a+" "+b
           print "test:%s"%(c)
doublehex()

是否有更简单的方法来递增整个值,比如像这样:

char = 30D681
 char2 = 3227FF

 def doublehex():
    global char,char2
   for x in range(255):
        char = char + 1
        a = str(chr(char)).encode("hex")
        for p in range(255):
           char2 = char2 + 1
           b = str(chr(char2)).encode("hex")
           c = a+" "+b
           print "test:%s"%(c)
doublehex()

非常抱歉我的无知,我真的尝试过在谷歌上搜索答案,但找不到...

1个回答

14

把这些值看作整数,使用 xrange() 遍历这两个值。使用 format(value, 'X') 将其以十六进制形式显示

start = 0x30D681  # hex literal, gives us a regular integer
end = 0x3227FF

for i in xrange(start, end + 1):
    print format(i, 'X')
如果您的开始和结束值是十六进制字符串,请先使用int(hexvalue, 16)将其转换为整数:
start = int('30D681', 16)
end = int('3227FF', 16)

1
非常感谢你,Martijn。我知道肯定有更简单的方法来完成它! :) - user2188291

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接