Karakterlánc hexadecimálisra a Pythonban

String Hexadecimal Python



A hexadecimális bázis 16, és egy karakterláncot hexadecimális formátumban ábrázolhatunk a 0x előtag használatával.

A karakterláncot hexadecimálissá alakíthatjuk a következő módszerekkel:







  1. A hex (n) módszer alkalmazásával
  2. Az encode () metódus használatával
  3. A literal_eval () metódust használva

1. módszer: A hexa () használata

A karakterláncot hexadecimálissá alakíthatjuk a hex () metódussal. A hex () metódus egész alakban fogadja el a paramétert, és ehhez először a karakterláncot egész számmá kell alakítanunk, majd ezt az értéket át kell adnunk a hex () metódusnak az alábbiak szerint:



Példa: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
tizenegy
12
13
14
tizenöt
16
17
18
19
húsz
huszonegy
# string_to_hex.py

o = '245FC'

# adja át az str -t az int () -nek, hogy base16 int -vé alakítsa

base16INT= int(o, 16)

# nyomtassa ki az átalakított karakterláncot base16 hexadecimális int értékre

nyomtatás('érték',base16INT)

nyomtatás('érték',típus(base16INT))

hex_value= hatszög(base16INT)

nyomtatás(hex_value)

# az érték típusának ellenőrzése

nyomtatás(típus(hex_value))

Kimenet:

1
2
3
4
5
6
7
érték148988

érték<osztály 'int'>

0x245fc

<osztály 'str'>

3. sor: Létrehoztunk egy karakterláncot a demóhoz.

6. sor: Ezt a karakterláncot átadjuk az int () metódusnak a 16. bázissal. Most ez az int () metódus hexadecimális egész értékre konvertálja a karakterláncot.



9. sor: Kinyomtatjuk azt az értéket, amelyet a karakterlánc egész hexadecimálisra konvertálása után kapunk.





10. sor: Az érték típust is kinyomtatjuk annak megerősítésére, hogy a karakterlánc most egész szám formájában van.

12. sor: Tudjuk, hogy a beépített hex (n) módszer elfogadja az egész értéket, és az egész számot hexadecimális karakterlánccá alakítja át. Ezért a karakterláncot egész számmá kell alakítanunk, hogy átadhassuk a hex () metódusba. Ezt a base16INT értéket átadtuk a hex () metódusnak, és megkaptuk a hex_value, string hexadecimális értéket.



13. sor: A konvertált hexadecimális értéket kinyomtatjuk.

16. sor: Kinyomtatjuk az átalakított hexadecimális érték típusát, amely a kimenetben azt mutatja, hogy ez egy karakterlánc típus.

Tehát most a karakterláncot hexadecimális értékké alakítottuk át.

Módszer: A karakterlánc konvertálása hexadecimálisra a kódolás () használatával

A normál karakterláncot hexadecimális karakterlánccá is átalakíthatjuk, amely nem tartalmaz hexadecimális karaktert. Ehhez a karakterláncot bájtra kell konvertálnunk a encode () metódussal, majd a karakterláncot hexadecimálissá alakíthatjuk az alábbiak szerint:

1
2
3
4
5
6
7
8
9
10
tizenegy
12
13
14
tizenöt
16
17
18
19
húsz
huszonegy
22
2. 3
24
25
# string_to_hex_utf8.py



# konvertálja a karakterláncot bájtra

o= 'linuxhint'.kódol('utf-8')



# nyomtassa ki az átalakított karakterláncot bájtokra

nyomtatás(o)



# konvertálja a karakterlánc bájtokat hexadecimális karakterlánccá

hex_str= o.hatszög()



# nyomtassa ki az átalakított hexadecimális értéktípust

nyomtatás(típus(hex_str))

Kimenet:

1
2
3
b'linuxhint'

<osztály 'str'>

4-7 sor: Létrehoztunk egy karakterláncot, amely nem tartalmaz hexadecimális karaktert. Ezután konvertálja ezeket a karakterláncokat bájtra az encode () metódussal. Ezután kinyomtatjuk azokat a bájtokat, amelyeket az 1 -es kimeneti sorban láthatunk.

10-13 sor: A hex () metódust a pont operátor segítségével hívjuk, és most a bájtokat a szükséges hexadecimális karakterlánc értékké alakítjuk át. Az eredménylánc típusának megerősítéséhez csak kinyomtatjuk a 13 -as sorszámot, és a kimenet azt mutatja, hogy hexadecimális karakterláncban van.

3. módszer. Ast.literal_eval () módszerrel

A karakterláncot egész számmá is alakíthatjuk a literal_eval ast könyvtár módszerével. Ez a módszer a karakterláncot egész számmá alakítja, hogy a hex () metódussal hexadecimális karakterlánccá alakítsa át a karakterláncot. Ez a módszer azonban csak 0x előtagú karaktereket fogad el.

1
2
3
4
5
6
7
8
9
10
tizenegy
12
13
14
tizenöt
16
17
18
19
húsz
huszonegy
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

tól tőlágimportliteral_eval

o = '0xAAA'



# konvertálja a karakterláncot egész számgá

convert_str=literal_eval(o)



# nyomtassa ki a convert_str. értékét és típusát

nyomtatás(convert_str)

nyomtatás('típus', típus(convert_str))



# adja át a convert_str -t a hex () metódusnak

hex_value= hatszög(convert_str)

nyomtatás(hex_value)



# az érték típusának ellenőrzése

nyomtatás(típus(hex_value))

Kimenet:

1
2
3
4
5
6
7
2730

típus <osztály 'int'>

0xaaa

<osztály 'str'>

2-10. Sor: Importáljuk a literal_eval () metódust az ast könyvtárból. Ezután létrehozunk egy karakterláncot a 0x előtaggal. Ezután átadtuk ezt a karakterláncot a literal_eval () metódusnak, és egész számmá alakítottuk át. Annak megerősítésére, hogy a kimenet egész alakban van, kinyomtatjuk a 9. sorban. Kinyomtatjuk a kimenet típusát is, amely azt mutatja, hogy egész szám.

13-17 sor: Ismerjük a beépített hex (n) metódust, amely elfogadja az egész értéket, és az egész számot hexadecimális karakterlánccá alakítja át. Ezért a karakterláncot egész számmá kell alakítanunk, hogy átadhassuk a hex () metódusba. Ezt a convert_str (egész) értéket átadtuk a hex () metódusnak, és megkaptuk a hex_value, string hexadecimális értéket. A konvertált hexadecimális értéket kinyomtatjuk. Kinyomtatjuk a konvertált hexadecimális érték típusát is, ami azt mutatja, hogy ez egy karakterlánc hexadecimális típus.

Hiba kivétel (TypeError):

Néha hibákat kapunk, amikor a karakterláncot hexadecimális karakterlánccá alakítjuk. Ennek oka a hex () metódus, csak az egész értéket fogadja el paraméterként.

1
2
3
4
5
6
7
string_hex= '0xFF'



hex_output= hatszög(string_hex)

nyomtatás(hex_output)

Kimenet:

1
Típushiba:'str' tárgynem értelmezhetőmintegy egész szám

Következtetés:

Tehát különböző módszereket láttunk a karakterlánc hexadecimális kisbetűssé alakítására. A hex () módszer nagyon népszerű az egyszerű használata miatt. Néha azonban a karakterláncot 0x előtag használata nélkül szeretnénk átalakítani, így ebben az esetben használhatjuk a byte encode () metódust, amint azt a cikkben már láttuk.

A cikk kódja az alábbi github linken érhető el:

https://github.com/shekharpandey89/string-to-hex-conversion