2011-11-11 21 views

risposta

52

Ci sono diversi modi per farlo:

>>> hex(ord("c")) 
'0x63' 
>>> format(ord("c"), "x") 
'63' 
>>> "c".encode("hex") 
'63' 

Per utilizzare la codifica hex in Python 3, utilizzare

>>> codecs.encode(b"c", "hex") 
b'63' 
+7

'" {0: 02x} ". Format (ord ('c'))' mantiene lo zero iniziale, se ce n'è uno. –

+1

@Mike: buon punto. '" c ".encode (" hex ")' fa altrettanto. –

+0

@eryksun: Su Python 3, puoi usare 'binascii.hexlify()' e 'binascii.unhexlify()'. –

2

Questo potrebbe aiutare

import binascii 

x = b'test' 
x = binascii.hexlify(x) 
y = str(x,'ascii') 

print(x) # Outputs b'74657374' (hex encoding of "test") 
print(y) # Outputs 74657374 

x_unhexed = binascii.unhexlify(x) 
print(x_unhexed) # Outputs b'test' 

x_ascii = str(x_unhexed,'ascii') 
print(x_ascii) # Outputs test 

Questo codice contiene esempi per convertire i caratteri ASCII in e da esadecimale. Nella tua situazione, la linea che vorresti usare è str(binascii.hexlify(c),'ascii').

+0

Ciao, e benvenuto su StackOverflow. Sono confuso dai commenti nel tuo codice (ad esempio '# x -> b'test''). Non vedo dove "test" è usato da qualche parte nella fonte. Penso anche che sarebbe di aiuto formattare l'output anche come blocco di codice, per preservare le newline. – Michael

Problemi correlati