使用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表示。