How do I represent a hex value in a python string?

usustarr picture usustarr · Apr 23, 2015 · Viewed 7.3k times · Source

I have some code in C that expects char buffer that looks like this:

 char buf[ 64 ];
    buf[0] = 0x01;
    buf[1] = 0x11;
    buf[2] = 0x61;
    buf[3] = 0x08;
    buf[4] = 0x01;

I am trying to create this buffer in Python, and pass the pointer to the C code. I created buf as follows,

buf = create_string_buffer('0x01 0x11 0x61 0x08 0x01', 64)

but when I pass the pointer to my C code, it looks like the C code is reading the ASCII code for 01, not a hex literal.

How do I fix this?

Answer

Simon Gibbons picture Simon Gibbons · Apr 23, 2015

In Python hex literals are escaped by \x

so in your case the string to pass into your c function would be written as

'\x01\x11\x61\x08\x01'

There is a table here in the python docs listing the escape sequences that python understands.