incrementing string/hex value from file and write back

Dave Angel davea at ieee.org
Thu Aug 20 19:05:17 EDT 2009


Matthias Güntert wrote:
> Hello guys
>
> I would like to read a hex number from an ASCII file, increment it and
> write it back. 
> How can this be performed? 
>
> I have tried several approaches:
>
> my file serial.txt contains: 0C 
>
> ----------------------------------
> f = open('serial.txt', 'r')
> val = f.read()
> val = val.encode('hex')
> print val
> ----------------------------------
> --> 3043 
>
> ----------------------------------
> f = open('serial.txt', 'r')
> val = f.read()  
> print val
> val = val+1
> ----------------------------------
> --> TypeError: cannot concatenate 'str' and 'int' objects
>
> ----------------------------------
> f = open('serial.txt', 'rb')
> val = f.read()
> val = val + 1
> ----------------------------------
> --> TypeError: cannot concatenate 'str' and 'int' objects
>
>
> hm....
>
>
>   
You don't say much to constrain the file.  Is it always two characters 
(nibbles) long?  Or might it have a newline at the end?  If it could be 
multiple lines, is each line limited to 2 columns?  or to 8 columns?  or 
no limit?

To interpret val as an integer, try    new = int(val, 16)
Then to convert back to hex digits, try  line = "%x" % (val+1)

For fancier conversions, look at binascii.unhexlify() and hexlify().   
Look also at chr() and ord().  and str.format()

DaveA




More information about the Python-list mailing list