fernandes
fernandes

Reputation: 31

Convert integer to hex in Python

In Python I want to tranform the integer 3892 into a hexcode with the given format and the result \x00\x00\x0F\x34. How can this be achieved?

Upvotes: 2

Views: 6142

Answers (3)

Martijn Pieters
Martijn Pieters

Reputation: 1124538

You are converting to a binary representation of the number, not so much a hex representation (although Python will display the bytes as hex). Use the struct module for such conversions.

Demonstration:

>>> struct.pack('>I', 3892)
'\x00\x00\x0f4'
>>> struct.pack('>I', 4314)
'\x00\x00\x10\xda'

Note that the ASCII code for '4' is 0x34, python only displays bytes with a \x escape if it is a non-printable character. Because 0x34 is printable, python outputs that as 4 instead.

'>' in the formatting code above means 'big endian' and 'I' is an unsigned int conversion (4 bytes).

Upvotes: 8

cdarke
cdarke

Reputation: 44424

import re
print re.sub(r'([0-9A-F]{2})',r'\\x\1','%08X' % 3892)

gives:

\x00\x00\x0F\x34

Upvotes: 2

HYRY
HYRY

Reputation: 97331

If you have numpy installed:

>>> import numpy as np
>>> np.int32(3892).tostring()
'4\x0f\x00\x00'

Upvotes: 1

Related Questions