Преобразовать шестнадцатеричное число в обратную строку - PullRequest
0 голосов
/ 23 мая 2018

У меня есть эта переменная

x = 0x61626364

Мне нужна строка "dcba", которая преобразует шестнадцатеричное число в char и затем переворачивает строку.

Как я могу это сделать в python

Ответы [ 4 ]

0 голосов
/ 23 мая 2018
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)
0 голосов
/ 23 мая 2018

Вы можете попробовать это:

x = 0x61626364
print(x.to_bytes(4, 'little').decode('utf-8'))

Объяснение:

Используя to_bytes(), мы получим байт-код, а для получения строки dcba используем функцию декодирования.

Вывод:

dcba
0 голосов
/ 23 мая 2018

Наслаждайтесь!

def convert(h):
    result = ''
    while h>0:
        result+=chr(h%256)
        h//=256
    return result


>>> convert(0x61626364)
'dcba'
>>> convert(0x21646c726f57206f6c6c6548)
'Hello World!'
0 голосов
/ 23 мая 2018

Интерпретировать целое число как байты в порядке с прямым порядком байтов, используя метод int.to_bytes() :

>>> x = 0x61626364
>>> x.to_bytes(4, 'little')
b'dcba'

Для этого вам нужно знать длину вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...