У меня есть эта переменная
x = 0x61626364
Мне нужна строка "dcba", которая преобразует шестнадцатеричное число в char и затем переворачивает строку.
"dcba"
Как я могу это сделать в python
import math a = [chr(0xFF&(x>>(8*i))) for i in range(math.ceil(math.log(x, 2)/8))] b = "" for i in range(len(a)): b += a[i] print(b)
Вы можете попробовать это:
x = 0x61626364 print(x.to_bytes(4, 'little').decode('utf-8'))
Объяснение:
Используя to_bytes(), мы получим байт-код, а для получения строки dcba используем функцию декодирования.
to_bytes()
dcba
Вывод:
Наслаждайтесь!
def convert(h): result = '' while h>0: result+=chr(h%256) h//=256 return result >>> convert(0x61626364) 'dcba' >>> convert(0x21646c726f57206f6c6c6548) 'Hello World!'
Интерпретировать целое число как байты в порядке с прямым порядком байтов, используя метод int.to_bytes() :
int.to_bytes()
>>> x = 0x61626364 >>> x.to_bytes(4, 'little') b'dcba'
Для этого вам нужно знать длину вывода.