Retrieving int from hex in a file.

bgeddy bgeddy at home.havin.a.break
Mon Apr 28 08:13:17 EDT 2008


Filipe Teixeira wrote:
> Hi.
> 
> I have to open a binary file from an old computer and recover the
> information stored (or at least try to). I use:
> 
> f=open('file.bin','rb')
> a=f.read()
> f.close()
> 
> a in now a string full of hex representations in the form:
> 
> a[6]='\x14'
> a[7]='\x20'
> 
> I would like to convert these hex representations to int, but this
> (the most obvious way) doesn't seem to be working
> 
>>>> q=a[6]
>>>> q
> '\x14'
>>>> int(q,16)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> ValueError: invalid literal for int():
> 
> How can I do this?
> 
> Thanks

As you say you are trying to recover information from the old computer 
are you sure you want to convert the data to it's integer representation   ?
What I mean is in this case the string will contain the actual data read 
from the file, not a hex representation. It's just the python displays 
this data as '\x14'. BTW - are you sure it's displaying '\x20' from your 
data as this should be a space character i.e. " ".

In the python interpreter try this:

	mydata=""
	for i in range(256):
		mydata+=chr(i)
 >> mydata

This will show you the hex representation of the values in mydata that 
it can't display however the string is not a string of "hex values" as 
such, it contains the binary values 0-255.



More information about the Python-list mailing list