String para hexadecimal em Python

String Hexadecimal Python



Hexadecimal tem uma base de 16 e podemos representar uma string em formato hexadecimal usando o prefixo 0x.

Podemos converter a string em hexadecimal usando os seguintes métodos:







  1. Usando o método hex (n)
  2. Usando o método encode ()
  3. Usando o método literal_eval ()

Método 1: usando o hex ()

Podemos converter a string em hexadecimal usando o método hex (). O método hex () aceita o parâmetro na forma de inteiro, e para isso primeiro, temos que converter a string para um inteiro e então passar esse valor para o método hex () conforme mostrado abaixo:



Exemplo: string_to_hex.py

1
2
3
4
5
6
7
8
9
10
onze
12
13
14
quinze
16
17
18
19
vinte
vinte e um
# string_to_hex.py

p = '245FC'

# passe o str para int () para convertê-lo em base16 int

base16INT= int(p, 16)

# imprime a string convertida para o valor int hexadecimal de base16

imprimir('valor',base16INT)

imprimir('valor',modelo(base16INT))

hex_value= hex(base16INT)

imprimir(hex_value)

# chcking o tipo do valor

imprimir(modelo(hex_value))

Saída:

1
2
3
4
5
6
7
valor148988

valor<classe 'int'>

0x245fc

<classe 'str'>

Linha 3: Criamos uma string para a demonstração.

Linha 6: Passamos essa string para o método int () com a base 16. Agora, esse método int () converterá a string para o valor inteiro hexadecimal.



Linha 9: Imprimimos o valor que obtemos após converter a string em hexadecimal inteiro.





Linha 10: Também imprimimos o tipo de valor para confirmar que a string agora está na forma de um inteiro.

Linha 12: Sabemos que o método hex (n) embutido aceita o valor inteiro, convertendo o inteiro em string hexadecimal. É por isso que precisamos converter a string em um inteiro para passá-la para o método hex (). Passamos esse valor base16INT para o método hex () e obtivemos hex_value, string hexadecimal.



Linha 13: Imprimimos esse valor hexadecimal convertido.

Linha 16: Imprimimos o tipo do valor hexadecimal convertido, que mostra na saída que é um tipo de string.

Portanto, agora convertemos a string em um valor hexadecimal.

Método 2: converter a string em hexadecimal usando o encode ()

Também podemos converter a string normal em uma string hexadecimal que não possui nenhum caractere hexadecimal. Para isso, temos que converter a string em byte usando o método encode (), e então podemos converter a string em hexadecimal conforme mostrado abaixo:

1
2
3
4
5
6
7
8
9
10
onze
12
13
14
quinze
16
17
18
19
vinte
vinte e um
22
2,3
24
25
# string_to_hex_utf8.py



# converta a string em bytes

p= 'linuxhint'.codificar('utf-8')



# imprime a string convertida em bytes

imprimir(p)



# converter os bytes da string para a string hexadecimal

hex_str= p.hex()



# imprime o tipo de valor hexadecimal convertido

imprimir(modelo(hex_str))

Saída:

1
2
3
b'linuxhint'

<classe 'str'>

Linha 4 a 7: Criamos uma string que não possui nenhum caractere hexadecimal. E então converta essas strings em bytes usando o método encode (). E então, imprimimos esses bytes, que podemos ver na linha de saída número 1.

Linha 10 a 13: Chamamos o método hex () usando o operador ponto, e agora os bytes são convertidos para o valor de string hexadecimal que exigimos. Para confirmar o tipo da string de resultado, simplesmente imprimimos a linha número 13, e a saída mostra que ela está em um tipo de string hexadecimal.

Método 3. Usando o método ast.literal_eval ()

Também podemos converter a string em um inteiro usando o método da biblioteca ast literal_eval. Este método também converte a string em um inteiro para usar o método hex () para converter a string em uma string hexadecimal. Mas esse método só aceita caracteres de prefixo 0x.

1
2
3
4
5
6
7
8
9
10
onze
12
13
14
quinze
16
17
18
19
vinte
vinte e um
22
2,3
24
25
26
27
28
29
30
31
32
33
# string_to_hex_utf8.py

a partir defilialimportarliteral_eval

p = '0xAAA'



# converta a string para o inteiro

convert_str=literal_eval(p)



# imprime o valor e o tipo de convert_str

imprimir(convert_str)

imprimir('modelo', modelo(convert_str))



# passe convert_str para o método hex ()

hex_value= hex(convert_str)

imprimir(hex_value)



# chcking o tipo do valor

imprimir(modelo(hex_value))

Saída:

1
2
3
4
5
6
7
2730

modelo <classe 'int'>

0xaaa

<classe 'str'>

Linha 2 a 10: Importamos o método literal_eval () da biblioteca ast. Em seguida, criamos uma string com o prefixo 0x. Em seguida, passamos essa string para o método literal_eval () e a convertemos para o inteiro. Para confirmar que a saída está no formato inteiro, nós a imprimimos na linha número 9. Também imprimimos o tipo da saída, que mostra que é um inteiro.

Linha 13 a 17: Conhecemos o método hex (n) embutido que aceita o valor inteiro, convertendo o inteiro em string hexadecimal. É por isso que precisamos converter a string em um inteiro para passá-la para o método hex (). Passamos esse valor convert_str (inteiro) para o método hex () e obtivemos hex_value, string hexadecimal. Imprimimos esse valor hexadecimal convertido. Imprimimos também o tipo do valor hexadecimal convertido, o que mostra que é um tipo hexadecimal de string.

Exceção de erro (TypeError):

Às vezes, obteremos erros ao converter a string em uma string hexadecimal. A razão por trás disso é que o método hex () aceita apenas o valor inteiro como parâmetro.

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



hex_output= hex(string_hex)

imprimir(hex_output)

Saída:

1
TypeError:'str' objetonão pode ser interpretadoComoum inteiro

Conclusão:

Portanto, vimos métodos diferentes para converter a string em uma string hexadecimal em minúsculas. O método hex () é muito popular devido ao seu uso fácil. Mas às vezes, queremos converter a string sem usar o prefixo 0x, então, nesse caso, podemos usar o método bytes encode (), como já vimos no artigo.

O código deste artigo está disponível no link do github abaixo:

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