在 Python 中转换十六进制为字节

Rayven Esplanada 2023年1月30日 2020年12月19日
  1. 初始化一个十六进制值
  2. Python 中使用 bytes.fromhex() 把十六进制转换为字节
  3. Python 中使用 unhexlify 模块将十六进制转换为字节
在 Python 中转换十六进制为字节

本教程将介绍如何在 Python 中把十六进制值转换为字节文字。

十六进制或十六进制值是由 16 个符号组成的数字表示,而不是十进制值中通常的 10 个符号。从 0 到 9 的数字和从 ae 的字符组成了 16 个十六进制符号。

例如,数字 1000 的十六进制转换是 3E8

初始化一个十六进制值

让我们使用一个字符串创建一个十六进制值,并使用 binascii 模块中的函数 hexlify() 将短语 A quick brown fox 转换为十六进制值。

另外,要将一个字符串转换成十六进制,我们需要将字符串转换成一个字节,才能够将其转换成十六进制。

import binascii
str_val = 'A quick brown fox'.encode('utf-8')
hex_val = binascii.hexlify(str_val).decode('utf-8')

print(hex_val)

输出:

4120717569636b2062726f776e20666f78

现在我们已经成功地将一个字符串转换为十六进制,让我们继续研究如何将一个十六进制转换为一个字节。

Python 中使用 bytes.fromhex() 把十六进制转换为字节

函数 bytes.fromhex() 接受一个单一的十六进制值参数,并将其转换为一个字节文字。

从前面的结果中获取十六进制值,使用 fromhex() 将其转换为字节文字。

hex_val = '4120717569636b2062726f776e20666f78'

print(bytes.fromhex(hex_val))

输出:

Byte value:  b'A quick brown fox'

结果将输出 bytes 字面量,也就是将短语转换为十六进制,并以字母 b 为前缀,指定该值是一个字节字样。

Python 中使用 unhexlify 模块将十六进制转换为字节

Python binascii 模块包含了二进制和 ASCII 操作的高效实用函数。unhexlify()binascii 模块中的一个函数,它将一个十六进制值转换为一个字节文字。

让我们用特殊的非 ASCII 字符初始化一个新的例子,然后将其转换为十六进制值。这个例子是短语 a quick brown fox 的希腊语翻译。

import binascii
from binascii import unhexlify

str_val = 'Μια γρήγορη καφέ αλεπού'.encode('utf-8') #A quick brown fox in Greek translation
hex_val = binascii.hexlify(str_val).decode('utf-8')

print('String value: ', str_val.decode('utf-8'))
print('Hexadecimal: ', hex_val)
print('Byte value: ', unhexlify(hex_val))

输出:

String value:  Μια γρήγορη καφέ αλεπού
Hexadecimal:  ce9cceb9ceb120ceb3cf81ceaeceb3cebfcf81ceb720cebaceb1cf86cead20ceb1cebbceb5cf80cebfcf8d
Byte value:  b'\xce\x9c\xce\xb9\xce\xb1 \xce\xb3\xcf\x81\xce\xae\xce\xb3\xce\xbf\xcf\x81\xce\xb7 \xce\xba\xce\xb1\xcf\x86\xce\xad \xce\xb1\xce\xbb\xce\xb5\xcf\x80\xce\xbf\xcf\x8d'

现在我们已经成功地将十六进制值转换为字节。

在这篇文章中,我们已经介绍了在 Python 中使用 fromhex()binascii.unhexlify() 将十六进制值转换为字节字面。如果你不想在你的源代码中增加导入,最好使用 fromhex()。否则,两个函数将提供相同的输出。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相关文章 - Python Bytes

相关文章 - Python Hex