I am new to python and have following problem: I need to convert an integer to a hex string with 6 bytes.
e.g. 281473900746245 --> \"\\xFF\\xFF\\xBF\\xDE\\x16\\x05\"
There might be a better solution, but you can do this:
x = 281473900746245
decoded_x = hex(x)[2:].decode('hex') # value: '\xff\xff\xbf\xde\x16\x05'
Breakdown:
hex(x) # value: '0xffffbfde1605'
hex(x)[2:] # value: 'ffffbfde1605'
hex(x)[2:].decode('hex') # value: '\xff\xff\xbf\xde\x16\x05'
Update:
Per @multipleinstances and @Sven's comments, since you might be dealing with long values, you might have to tweak the output of hex a little bit:
format(x, 'x') # value: 'ffffbfde1605'
Sometimes, however, the output of hex might be an odd-length, which would break decode, so it'd probably be better to create a function to do this:
def convert(int_value):
encoded = format(int_value, 'x')
length = len(encoded)
encoded = encoded.zfill(length+length%2)
return encoded.decode('hex')