Řetězec na hexadecimální v Pythonu

String Hexadecimal Python



Hexadecimal has a base of 16, and we can represent a string in hexadecimal format using the prefix 0x.

Řetězec můžeme převést na hexadecimální pomocí následujících metod:







  1. Pomocí metody hex (n)
  2. Pomocí metody encode ()
  3. Pomocí metody literal_eval ()

Metoda 1: Použití hexu ()

Řetězec můžeme převést na hexadecimální pomocí metody hex (). Metoda hex () přijímá parametr v celočíselné podobě, a proto musíme nejprve převést řetězec na celé číslo a poté předat tuto hodnotu metodě hex (), jak je uvedeno níže:



Příklad: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
jedenáct
12
13
14
patnáct
16
17
18
19
dvacet
dvacet jedna
# string_to_hex.py

p = '245FC'

# předejte str do int () a převeďte ho na base16 int

base16INT= int(p, 16)

# vytiskněte převedený řetězec na šestnáctkovou hodnotu int base16

tisk('hodnota',base16INT)

tisk('hodnota',typ(base16INT))

hex_value= hex(base16INT)

tisk(hex_value)

# Chcking the type of the value

tisk(typ(hex_value))

Výstup:

1
2
3
4
5
6
7
hodnota148988

hodnota<třída 'int'>

0x245fc

<třída 'str'>

Řádek 3: Vytvořili jsme řetězec pro demo.

Řádek 6: Tento řetězec předáme metodě int () se základnou 16. Nyní tato metoda int () převede řetězec na šestnáctkovou celočíselnou hodnotu.



Řádek 9: Vytiskneme hodnotu, kterou získáme po převodu řetězce na celé číslo v šestnáctkové soustavě.





Řádek 10: Vytiskneme také typ hodnoty, abychom potvrdili, že řetězec je nyní ve formě celého čísla.

Řádek 12: Víme, že vestavěná metoda hex (n) přijímá celočíselnou hodnotu a převádí ji na hexadecimální řetězec. Proto musíme převést řetězec na celé číslo, abychom jej předali metodě hex (). Předali jsme tuto hodnotu base16INT metodě hex () a dostali hex_value, řetězec hexadecimální.



Řádek 13: Vytiskneme převedenou hexadecimální hodnotu.

Řádek 16: Vytiskneme typ převedené hexadecimální hodnoty, který na výstupu ukazuje, že se jedná o typ řetězce.

Nyní jsme řetězec převedli na hexadecimální hodnotu.

Metoda 2: Převést řetězec na hexadecimální pomocí encode ()

Můžeme také převést normální řetězec na hexadecimální řetězec, který nemá žádný hexadecimální znak. Za tímto účelem musíme převést řetězec na bajt pomocí metody encode () a poté můžeme převést řetězec na hexadecimální, jak je uvedeno níže:

1
2
3
4
5
6
7
8
9
10
jedenáct
12
13
14
patnáct
16
17
18
19
dvacet
dvacet jedna
22
2. 3
24
25
# string_to_hex_utf8.py



# převést řetězec na bajty

p= 'linuxhint'.zakódovat('utf-8')



# vytiskněte převedený řetězec na bajty

tisk(p)



# převést bajty řetězce na hexadecimální řetězec

hex_str= p.hex()



# vytiskněte převedený typ šestnáctkové hodnoty

tisk(typ(hex_str))

Výstup:

1
2
3
b'linuxhint'

<třída 'str'>

Řádek 4 až 7: Vytvořili jsme řetězec, který nemá žádný hexadecimální znak. A pak tyto řetězce převeďte na bajty pomocí metody encode (). A pak vytiskneme ty bajty, které můžeme vidět na výstupním řádku číslo 1.

Řádek 10 až 13: Voláme metodu hex () pomocí tečkového operátoru a nyní jsou bajty převedeny na požadovanou hodnotu hexadecimálního řetězce. Abychom potvrdili typ výsledného řetězce, stačí vytisknout řádek číslo 13 a výstup ukazuje, že je v řetězcovém hexadecimálním typu.

Metoda 3. Použití metody ast.literal_eval ()

Můžeme také převést řetězec na celé číslo pomocí metody knihovny ast literal_eval. Tato metoda také převede řetězec na celé číslo a použije metodu hex () k převodu řetězce na hexadecimální řetězec. Tato metoda však přijímá pouze 0x předpony.

1
2
3
4
5
6
7
8
9
10
jedenáct
12
13
14
patnáct
16
17
18
19
dvacet
dvacet jedna
22
2. 3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

zvětevimportliteral_eval

p = '0xAAA'



# převést řetězec na celé číslo

převést_str=literal_eval(p)



# vytiskněte hodnotu a typ souboru convert_str

tisk(převést_str)

tisk('typ', typ(převést_str))



# předejte metodu convert_str metodě hex ()

hex_value= hex(převést_str)

tisk(hex_value)



# Chcking the type of the value

tisk(typ(hex_value))

Výstup:

1
2
3
4
5
6
7
2730

typ <třída 'int'>

0xaaa

<třída 'str'>

Řádek 2 až 10: Metodu literal_eval () importujeme z ast knihovny. Poté vytvoříme řetězec s předponou 0x. Poté jsme předali tento řetězec metodě literal_eval () a převedli jej na celé číslo. Abychom potvrdili, že výstup je v celočíselném tvaru, vytiskneme jej v řádku číslo 9. Vytiskneme také typ výstupu, který ukazuje, že jde o celé číslo.

Řádek 13 až 17: Známe vestavěnou metodu hex (n), která přijímá celočíselnou hodnotu a převádí ji na hexadecimální řetězec. Proto musíme převést řetězec na celé číslo, abychom jej předali metodě hex (). Předali jsme tuto hodnotu convert_str (integer) metodě hex () a dostali hex_value, řetězec hexadecimální. Vytiskneme převedenou hexadecimální hodnotu. Vytiskneme také typ převedené hexadecimální hodnoty, což ukazuje, že se jedná o řetězcový hexadecimální typ.

Výjimka chyby (TypeError):

Někdy se nám při převodu řetězce na hexadecimální řetězec zobrazí chyby. Důvodem je metoda hex (), která jako parametr přijímá pouze celočíselnou hodnotu.

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



hex_output= hex(string_hex)

tisk(hex_output)

Výstup:

1
Zadejte Chyba:'str' objektnelze interpretovattak jakocelé číslo

Závěr:

Takže jsme viděli různé metody pro převod řetězce na hexadecimální řetězec malých písmen. Metoda hex () je velmi oblíbená díky snadnému použití. Někdy však chceme řetězec převést bez použití předpony 0x, takže v takovém případě můžeme použít metodu bytes encode (), jak jsme již v článku viděli.

Kód tohoto článku je k dispozici na níže uvedeném odkazu github:

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