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:
- Usando o método hex (n)
- Usando o método encode ()
- 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: