b2a_hex (data) or hexlify (data) funtionality in V1.5.2

Niels Diepeveen niels at endea.demon.nl
Tue Sep 19 22:38:00 CEST 2000

Jens Arnfelt schreef:
> ----------- snip ---------
> b2a_hex (data)
> hexlify (data)
>     Return the hexadecimal representation of the binary data. Every byte
> of data is
>     converted into the corresponding 2-digit hex representation. The
>     resulting string is therefore twice as long as the length of data.
> ------------ snip --------
> Is there any way I can make, export, simulate, make or .. this function
> in Python 1.5.2.
> Unfortunately I'm not in a position to upgrade Python to V2.0 and I need
> the above functionality to be
> as fast as possible since this is where 90% of my CPU time is spent in
> my application.

Using the right algorithm makes a big difference. The fastest I could
come up with is this:

import string

_hexbyte = {}  # setup lookup table
for _i in xrange(256):
    _hexbyte[chr(_i)] = '%02x' % _i

def bin2hex(s):
    t = range(len(s))  # preallocate intermediate list
    hexbyte = _hexbyte # get lookup table into local namespace
    for i in t:
        t[i] = hexbyte[s[i]]
    return string.join(t, '')

On my system this is about 7 times faster than the map/lambda thing
(converting 1000 strings of 1000 bytes). Just don't put very large
strings into it, because of the memory needed for the intermediate list.

Niels Diepeveen
Endea automatisering

More information about the Python-list mailing list