《Python Cookbook(第3版)中文版》——6.9 编码和解码十六进制数字

简介:

本节书摘来自异步社区《Python Cookbook(第3版)中文版》一书中的第6章,第6.9节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.9 编码和解码十六进制数字

6.9.1 问题

我们需要将十六进制数组成的字符串解码为字节流,或者将字节流编码为十六进制数。

6.9.2 解决方案

如果需要编码或解码由十六进制数组成的原始字符串,可以使用binascii模块。示例如下:

>>> # Initial byte string
>>> s = b'hello'
>>> # Encode as hex
>>> import binascii
>>> h = binascii.b2a_hex(s)
>>> h
b'68656c6c6f'
>>> # Decode back to bytes
>>> binascii.a2b_hex(h)
b'hello'
>>>

同样的功能也可以在base64模块中找到。示例如下:

>>> import base64
>>> h = base64.b16encode(s)
>>> h
b'68656C6C6F'
>>> base64.b16decode(h)
b'hello'
>>>

6.9.3 讨论

对于大部分情况而言,采用上面给出的函数对十六进制数进行转换都是简单直接的。这两种技术的主要区别在于大写转换。base64.b16decode()和base64.b16encode()函数只能对大写形式的十六进制数进行操作,而binascii模块能够处理任意一种情况。

此外还需要重点提到的是编码函数产生的输出总是字节串。如果要将其强制转换为Unicode输出,可能需要增加一些额外的解码操作。示例如下:

>>> h = base64.b16encode(s)
>>> print(h)
b'68656C6C6F'
>>> print(h.decode('ascii'))
68656C6C6F
>>>

当解码十六进制数时,b16decode()和a2b_hex()函数可接受字节串或Unicode字符串作为输入。但是,这些字符串中必须只能包含ASCII编码的十六进制数字。

相关文章
|
4月前
|
Python
python第三方库-字符串编码工具 chardet 的使用(python3经典编程案例)
这篇文章介绍了如何使用Python的第三方库chardet来检测字符串的编码类型,包括ASCII、GBK、UTF-8和日文编码的检测示例。
177 6
|
4月前
|
Python
Python 中如何指定 open 编码为ANSI
Python 中如何指定 open 编码为ANSI
70 1
|
5月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
336 1
|
5月前
|
开发者 Python
Python编码风格
Python编码风格
36 1
|
5月前
|
算法 Python
【Leetcode刷题Python】百分号解码
深信服公司的算法笔试题.
44 1
|
6月前
|
Python
11个提升Python列表编码效率的高级技巧
Python中关于列表的一些很酷的技巧
60 1
|
5月前
|
JSON 数据库 开发者
FastAPI入门指南:Python开发者必看——从零基础到精通,掌握FastAPI的全栈式Web开发流程,解锁高效编码的秘密!
【8月更文挑战第31天】在当今的Web开发领域,FastAPI迅速成为开发者的热门选择。本指南带领Python开发者快速入门FastAPI,涵盖环境搭建、基础代码、路径参数、请求体处理、数据库操作及异常处理等内容,帮助你轻松掌握这一高效Web框架。通过实践操作,你将学会构建高性能的Web应用,并为后续复杂项目打下坚实基础。
159 0
|
5月前
|
Python
python中的二进制、八进制、十六进制的相互转换
python中的二进制、八进制、十六进制的相互转换
87 0
|
6月前
|
存储 缓存 Python
python中小数据池和编码
python中小数据池和编码
60 3
|
6月前
|
缓存 Java Unix
python中内存管理等10个编码习惯
【7月更文挑战第3天】本文涵盖了Python编程中的变量管理、模块导入、命令行参数、内存管理和面向对象设计的10个关键概念。
51 0
python中内存管理等10个编码习惯