binascii.unhexlify ... not clear about usage, and output

Peter Otten __peter__ at web.de
Wed May 30 04:31:50 EDT 2007


Vishal wrote:

> I have a file with a long list of hex characters, and I want to get a
> file with corresponding binary characters
> 
> here's what I did:
> 
>>>> import binascii
>>>> f1 = 'c:\\temp\\allhex.txt'
>>>> f2 = 'c:\\temp\\allbin.txt'
>>>> sf = open(f1, 'rU')
>>>> df = open(f2, 'w')
>>>> slines = sf.readlines()
>>>> for line in slines:
> ...   x = line.rstrip('\n')
> ...   y = binascii.unhexlify(x)
> ...   df.write(y)
> ...
>>>> df.close()
>>>> sf.close()

Your code is OK, but you have to open f2 in binary mode if your data is
truly binary (an image, say).
 
> But what I get is all garbage, atleast textpad and notepad show that
> I tried doing it for only one string, and this is what I am seeing on
> the interpreter:
> 
>>>> x
> '0164'
>>>> y
> '\x01d'
> 
> I was expecting 'y' would come out as a string with binary
> characters!!!

What are "binary characters"?

> What am i missing here? Can someone please help.

What /exactly/ did you expect? Note that "\x01d" and "\x01\x64" are just
different renderings of the same string chr(0x01) + chr(0x64).

Peter




More information about the Python-list mailing list