Reputation: 31
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
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
Reputation: 44424
import re
print re.sub(r'([0-9A-F]{2})',r'\\x\1','%08X' % 3892)
gives:
\x00\x00\x0F\x34
Upvotes: 2
Reputation: 97331
If you have numpy installed:
>>> import numpy as np
>>> np.int32(3892).tostring()
'4\x0f\x00\x00'
Upvotes: 1