Incrementing (iterating) between two hex values in Python

17,202

Just treat the values as integers, and use xrange() to range over the two values. Use format(value, 'X') to display it as hex:

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

for i in xrange(start, end + 1):
    print format(i, 'X')

If your start and end values were entered as hexadecimal strings, use int(hexvalue, 16) to turn those into integers first:

start = int('30D681', 16)
end = int('3227FF', 16)
Share:
17,202
user2188291
Author by

user2188291

Updated on June 22, 2022

Comments

  • user2188291
    user2188291 almost 2 years

    I'm learning Python (slowly but surely) but need to write a program that (among other things) increments between two hex values e.g. 30D681 and 3227FF. I'm having trouble finding the best way to do this. So far I have seen a snippet of code on here that separates the hex into 30, D6 and 81, then works like this-

    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()
    

    Is there a simpler way of incrementing the whole value, e.g. something like

    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()
    

    Apologies for my complete ignorance, I really have tried Googling the answer but couldn't find it...