Python中两个十六进制值之间的递增(迭代)

2024-04-20 05:15:01 发布

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

我正在学习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()

很抱歉我完全无知,我真的试过用谷歌搜索答案,但找不到。。。


Tags: infordefrangeglobalencodeprinthex
1条回答
网友
1楼 · 发布于 2024-04-20 05:15:01

只需将值视为整数,并使用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)

相关问题 更多 >