python bytes类型以16进制打印(print)

本文介绍如何将Python中的bytes类型数据转换为16进制表示,避免直接打印成字符,提供了一种简单的方法:使用内置的hex()函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python官方文档

https://docs.python.org/zh-cn/3/index.html

没事大家多去逛逛

 

 

正题:

在一些时候,我们会读取一些bytes类型的数据,我们可能想输出的他的16进制,当用print(bytes)的时候,就会直接打印出对应的字符,这不符合要求。看下官方怎么说:

即,对于bytes类型,官方已经给出了相应的操作函数,不需要再写什么循环了。

可以使用print(value.hex())来输出value的16进制数

 

### 如何在 Python 中将字节类型的数据转换为十六进制表示的列表 在 Python 中,可以利用内置库中的功能实现将 `bytes` 类型数据转换为十六进制表示的列表。具体来说,可以通过以下方式完成此操作: #### 方法一:使用列表推导式与 `.hex()` 或 `format()` 通过遍历每个字节并将其格式化为两位的十六进制字符串来构建目标列表。 ```python data_bytes = b'\x01\x02\x03\xff' hex_list = [f"{byte:02X}" for byte in data_bytes] print(hex_list) # 输出 ['01', '02', '03', 'FF'] ``` 上述代码中,`{byte:02X}` 使用了格式化字符串的方式,确保每一位字节都被转化为大写的两位十六进制形式[^1]。 #### 方法二:使用 `binascii.hexlify()` 另一种方法是借助 `binascii` 模块中的 `hexlify()` 函数先将整个字节序列转为连续的十六进制字符串,再分割成单独的部分。 ```python import binascii data_bytes = b'\x01\x02\x03\xff' hex_str = binascii.hexlify(data_bytes).decode() hex_list = [hex_str[i:i+2].upper() for i in range(0, len(hex_str), 2)] print(hex_list) # 输出 ['01', '02', '03', 'FF'] ``` 这里,`hexlify()` 返回的是一个由原始字节数组对应的十六进制组成的单个字符串,随后通过切片操作每两位一组形成最终的目标列表。 #### 方法三:直接调用 `bytes.hex()` 并处理结果 如果使用的 Python 版本支持(Python 3.5 及以上),可以直接应用 `bytes` 对象上的 `.hex()` 方法获取完整的十六进制串,之后按照需求拆分为独立项。 ```python data_bytes = b'\x01\x02\x03\xff' hex_str = data_bytes.hex().upper() hex_list = [hex_str[i:i+2] for i in range(0, len(hex_str), 2)] print(hex_list) # 输出 ['01', '02', '03', 'FF'] ``` 这种方法简洁明了,在现代版本的解释器环境下推荐优先考虑。 --- ### 总结 无论采用哪种方案,核心思路都是逐位解析输入的字节流,并依据固定的宽度映射到相应的十六进制编码上。这些技术不仅限于简单的显示用途,还广泛应用于网络协议分析、文件头校验等领域。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值