J'ai cette variable

x = 0x61626364

Je veux la chaîne "dcba", convertissant le nombre hexadécimal en char, puis inverse la chaîne.

Comment puis-je faire cela en python?

-1
Simone De Vita 23 mai 2018 à 14:11

4 réponses

Meilleure réponse

Vous pouvez essayer ceci:

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

Explication:

En utilisant to_bytes() nous obtiendrons le bytecode et pour obtenir la chaîne dcba utilisez la fonction de décodage.

Production:

dcba
0
kvmahesh 23 mai 2018 à 11:21

Interpréter l'entier comme des octets dans l'ordre petit-boutien, en utilisant le {{X0 }} méthode:

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

Vous devez connaître la longueur de sortie pour cela.

1
Martijn Pieters 23 mai 2018 à 11:19
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
debiandado 23 mai 2018 à 11:28

Prendre plaisir!

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


>>> convert(0x61626364)
'dcba'
>>> convert(0x21646c726f57206f6c6c6548)
'Hello World!'
0
Davo 23 mai 2018 à 11:33