Concise way to format list/array to custom(hex) string

josh logan dear.jay.logan at gmail.com
Sat Aug 2 11:19:04 EDT 2008


On Aug 2, 9:29 am, Grant Edwards <gra... at visi.com> wrote:
> On 2008-08-02, Zoltán Nagy <abes... at gmail.com> wrote:
>
>
>
>
>
> > Kurien Mathew írta:
> >> Hello,
>
> >> What will be a concise & efficient way to convert a list/array.array of
> >> n elements into a hex string? For e.g. given the bytes
> >> [116, 111, 110, 103, 107, 97]
> >> I would like the formatted string
> >> 0x74 0x6f 0x6e 0x67 0x6b 0x61
>
> >> Is there an approach better than below:
> >> hex = ''
> >> for b in bytes:
> >>     hex += ('0x%x '%b)
>
> ><snip>
>
> > You should avoid multiple string additions, as each one creates a new
> > string object (str objects are immutable). Try this:
>
> > bytes = [116, 111, 110, 103, 107, 97]
> > string = ''.join( ['0x%x '%b for b in bytes] )
>
> That results in an extra ' ' and the end of the string.  Try
> this:
>
> string = ' '.join(['0x%02x' % b for b in bytes])
>
> --
> Grant Edwards                   grante             Yow!  ... Just enough
>                                   at               time to do my LIBERACE
>                                visi.com            impression...

There is also a built-in hex() method in the Python Standard Library.
So, to make it cleaner:
' '.join(hex(x) for x in bytes)



More information about the Python-list mailing list