Convert hexadecimal string to binary

Bengt Richter bokr at oz.net
Thu Apr 22 14:42:58 EDT 2004


On 22 Apr 2004 08:06:26 -0700, ekoome at yahoo.com (Eric) wrote:

>Guys,
>I have the following hexadecimal string - '\xff\xff\xff' which i need
>to convert to binary.
>
>How would i go about doing this?
>
Assuming that string is the representation of a string of bytes whose binary
values are 255 (or hex 0xff), and you want to view it like a big-endian
number representation, and convert it to an integer (or long, if it gets big),

 >>> def s2i(s): return sum([ord(c)*256**i for i,c in enumerate(s[::-1])])
 ...
 >>> s2i('\xff\xff\xff')
 16777215
 >>> hex(s2i('\xff\xff\xff'))
 '0xffffff'
 >>> hex(s2i('\x01\x02\x03'))
 '0x10203'
 >>> hex(s2i('\x01\x02\x03\x04'))
 '0x1020304'
 >>> hex(s2i('\x01\x02\x03\x04\x05'))
'0x102030405L'
 >>> hex(s2i('\x01\x02'))
 '0x102'
 >>> s2i('\x01\x02')
 258

Note that this is unsigned --

 >>> hex(s2i('\xff\xff\xff\xff'))
 '0xFFFFFFFFL'
 >>> hex(s2i('\x80\x00\x00\x00'))
 '0x80000000L'

You could do it other and faster ways...

Regards,
Bengt Richter



More information about the Python-list mailing list