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 输出。
示例
以下程序使用解码函数将十六进制数字作为 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表示的十六进制数字。