【问题标题】:Incrementing (iterating) between two hex values in Python在 Python 中的两个十六进制值之间递增(迭代)
【发布时间】:2013-04-19 05:48:49
【问题描述】:

我正在学习 Python(缓慢但肯定),但需要编写一个(除其他外)在两个十六进制值之间递增的程序,例如30D681 和 3227FF。 我很难找到最好的方法来做到这一点。到目前为止,我在这里看到了一个 sn-p 代码,它将十六进制分成 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()

为我的完全无知道歉,我确实尝试过谷歌搜索但找不到答案...

【问题讨论】:

    标签: python hex iteration increment


    【解决方案1】:

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

    【讨论】:

    • 非常感谢Martijn。我知道会有更简单的方法! :)
    猜你喜欢
    • 2018-07-26
    • 2010-10-05
    • 2023-02-15
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多