使用Python进行十六进制数字的解码和编码


在这篇文章中,我们将学习如何使用Python解码和编码十六进制数字。

使用的方法

  • 使用binascii模块

  • 使用base64模块

方法1:使用Binascii模块

binascii模块中有多种方法可以转换二进制和不同的ASCII编码二进制表示形式。

如果只需要对原始十六进制数字字符串进行编码或解码,请使用**binascii模块**。

算法(步骤)

以下是执行所需任务的算法/步骤:−

  • 使用import关键字导入**binascii**模块。

  • 创建一个变量来存储**输入字节字符串**。

  • 使用**binascii**模块的**b2a_hex()**函数将输入字节字符串编码为十六进制数字。

  • 打印输入字节字符串的结果十六进制数字。

  • 使用**binascii**模块的**a2b_hex()**函数将上述十六进制数字解码回字节字符串。

示例

下面的程序使用b2a_hex()和a2b_hex()函数将输入字节字符串编码为十六进制数字,并将其解码回字节字符串−

# importing binascii module
import binascii

# input byte string 
inputByteString = b'tutorialspoint python'

# encoding input byte string into hexadecimal digits
hexdigits = binascii.b2a_hex(inputByteString)

# printing the resultant hexadecimal digits of the byte string 
print(hexdigits)

# decoding hexadecimal digits back into byte string 
print(binascii.a2b_hex(hexdigits))

输出

执行上述程序后,将生成以下输出:

b'7475746f7269616c73706f696e7420707974686f6e'
b'tutorialspoint python'

方法2:使用base64模块

**base64**模块也具有类似的功能。它也可以编码或解码原始十六进制数字字符串。

算法(步骤)

以下是执行所需任务的算法/步骤:−

  • 使用import关键字导入**base64**模块。

  • 创建一个变量来存储**输入字节字符串**。

  • 使用**base64**模块的**b16encode()**函数将输入字节字符串编码为十六进制数字。

  • 打印输入字节字符串的结果十六进制数字。

  • 使用**base64**模块的**b16decode()**函数将上述十六进制数字解码回字节字符串并打印它。

示例

下面的程序使用b16encode()和b16decode()函数将输入字节字符串编码为十六进制数字,并将其解码回字节字符串−

# importing base64 module
import base64

# input byte string 
inputByteString = b'tutorialspoint python'

# encoding input byte byte string into hexadecimal digits
# using b16encode() function of base64 module
hexdigits = base64.b16encode(inputByteString)

# printing the resultant hexadecimal digits of the byte string 
print(hexdigits)

# decoding hexadecimal digits back into byte string 
print(base64.b16decode(hexdigits))

输出

执行上述程序后,将生成以下输出:

b'7475746F7269616C73706F696E7420707974686F6E'
b'tutorialspoint python'

使用所描述的函数,十六进制的转换在大多数情况下很简单。**大小写折叠**是两种方法差异最大的地方。与binascii中的操作相反,**base64.b16decode()**和**base64.b16encode()**函数仅适用于**大写**十六进制字母。

同样重要的是要记住,编码函数的输出始终是字节字符串。可能需要添加额外的解码步骤才能强制其输出为Unicode。

示例

下面的程序使用decode函数将十六进制数字解码回ASCII格式:

# importing base64 module
import base64
 
# input byte string 
inputByteString = b'tutorialspoint python'
 
# encoding input byte byte string into hexadecimal digits
# using b16encode() function of base64 module
hexdigits = base64.b16encode(inputByteString)
 
# printing the resultant hexadecimal digitsof the byte string 
print(hexdigits)
 
# decoding hexadecimal digits in ASCII format using the decode() function
print(hexdigits.decode('ascii'))

输出

执行上述程序后,将生成以下输出:

b'7475746F7269616C73706F696E7420707974686F6E'
7475746F7269616C73706F696E7420707974686F6E

b16decode()和a2b_hex()方法在解码十六进制数字时接受字节或Unicode文本作为输入。但是,这些字符串只能包含经过ASCII编码的十六进制数字。

结论

在这篇文章中,我们学习了如何使用Python解码和编码数字十六进制数字。我们还学习了如何使用decode()方法解码十六进制数字的ASCII表示。

更新于:2023年1月23日

4K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告