温馨提示:标题解决方案请浏览后面部分,傻吊网友请按顺序浏览

启蒙(转载)自:https://blog.csdn.net/dengzhaoqun/article/details/8923259
顺带struct详解链接:https://blog.csdn.net/qq_30638831/article/details/80421019




最近在处理些16进制的字节流:

>>>bytes1 = b'5a'
>>>print(b"%s"%bytes1,len(bytes1))
b'5a' 2
>>>print(b"\xff",len(b'\xff'))
b'\xff' 1

而我们有时候得到的是"\xff"中的"ff",我们想要将其格式化为长度为1的"\xhh"格式的,代码示例:

>>>bytes1 = b'7a'
>>>print(b"\x%s"%bytes1)

万恶的解释器爆出了这样的错误:

ValueError:invalid \x escape at position 0

意思是因为各种原因不能直接输出"\xhh"格式的16进制数据。我就迷了,凭啥不能格式化输出。
翻阅各大傻吊网友的博客,说要双‘\’,‘0xhh’格式,抱歉我这是16进制的数据字节流,不跟字符串类似,你们真的以为我看了你们的博客会开心吗,这真是一把心酸一把泪,最终我找到那篇文章里的chr(),啊,chr(),你藏得真够深啊。
chr和ord这对“双胞胎”还能这么用!!!
代码优化:

>>>bytes1 = b'7a'
>>>bytes1 = bytes(chr(int('0x%s'%str(bytes1)[2:-1],16)),encoding="ascii")
b'z'

可能傻吊网友们放一起看得有点心累,心累就别看了,你竟然妄想这么简单就能解决标题问题。
chr()h和ord()是根据ascii码进行字符与数字的转换,但是!!!万恶的资本主义仅仅需要128个标准的ascii码就足够了,就满足了?!!【黑人问号】致使我们’\xff’就没法编码解码了。输出是这样的:

>>>print(bytes(chr(int('0x80',16)),encoding="utf-8"))#10进制128换成16进制就是80
b'\xc2\x80'
>>>#或者这样的
···print(bytes(chr(int('0x80',16)),encoding="ascii"))
UnicodeEncodeError: 'ascii' codec can't encode character '\x80' in position 0: ordinal not in range(128)

既然utf-8编码超出了范围,那么我们用强大的iso-8859-1:

>>>print(bytes(chr(int('0xff',16)),encoding="iso-8859-1"))
b'\xff'

快乐么,不快乐来瓶快乐氵。

有时候人总喜欢把简单的事情想复杂,我也不例外。我们就换个思路,自己封装!!!。百度,字符串与字节转换,得到了struct模块。
安装struct模块:

pip3 install pystruct#我是2和3的解释器版本共存,处理了下环境,所以是pip3

我们来实现一下:

>>>import struct
>>>a = 'ff'              #定义得到的16进制数据
>>>b = '0x%ff'%a         #将其格式化成16进制
>>>c = int(b,16)         #将其转换成10进制
>>>d = struct.pack('B',c)  #封装成16进制数据
>>>d
b'\xff'

然后献上代码:

>>>#方法一
>>>bytes(chr(int('0xff',16)),encoding="iso-8859-1")
b'\xff'
>>>#方法二
>>>import struct
>>>struct.pack('B',int('0x%s'%'ff',16))#大B是扩展,小b是标准
'\xff'

快乐,完美解决
大佬们都不来告诉我们这些菜鸡,只好自己写个博客,然后写着写着“跑题”了,就弄了个原创。如果谁发的文章比我早,联系我隐藏这篇博客,谢谢!转载请删除这段,本博客版权终归嘤嘤大军所有。

python 输出\xhh格式的16进制数据(改2)相关推荐

  1. python:将32位的16进制数据以二进制/hex/binary的形式写入到文件

    ★★★ 个人博客导读首页-点击此处 ★★★ 如0x1234,写入到文件应该是hex:[00 00 12 34] import sys import os import structdef tran_h ...

  2. python socket发送16进制数据_Python UDP Socket 16进制数据发送

    注:此篇文章首次发表于我的一篇CSDN博客里边,现转载于此. 今天琢磨了一下Python UDP Socket 16进制数据发送. 原以为UDP发送和接受的都是字符,怎么能够发送16进制?但细想,其实 ...

  3. python socket发送16进制数据_python socket以16进制的数据进行传递与解析

    参考:http://m.blog.csdn.net/blog/JasonQue/8256424 具体的struct模块的解释可以参照上面的链接. struct.pack也就是将数据按照二进制的格式进行 ...

  4. 【图片】Python对RGB颜色与16进制颜色进行互转

    RGB颜色被称为"真彩色",是Photoshop中默认使用的颜色,也是最常用的一种颜色模式.RGB模式的图像由3个颜色通道组成,分别为红色通道(Red).绿色通道(Green)和蓝 ...

  5. 字符串Ascll格式转16进制

    之前做过一些项目需要用到ASCLL码转换到16进制,在网上搜索后发现,大部分都是10进制数字转16进制数据,这对于8位字符类型unsignal char   (这里不用char,因为char是-127 ...

  6. 完美解决Python解决字符串转16进制数据

    Python解决字符串转16进制数据 废话不多说,直接上代码 首先解决字符串转16进制函数,代码如下: def str2hex(s):odata = 0;su =s.upper()for c in s ...

  7. python3.6串口编程实例_Python3 串口接收与发送16进制数据包的实例

    Python3 串口接收与发送16进制数据包的实例 如下所示: import serial import string import binascii s=serial.Serial('com4',9 ...

  8. java串口发送16进制数据_MFC串口通信发送16进制数据的方法

    本文实例为大家分享了MFC串口通信发送16进制数据的具体代码,供大家参考,具体内容如下 MFC串口通信会使用m_mscomm控件. 发送数据一般是在edit control 里输入自己想发送的内容,然 ...

  9. [工具]-C语言中字符串的形式打印16进制数据

    C语言中字符串的形式打印16进制数据. 这样写,输出更直观些 #define PRINT_BUF_MAX (32) #define TAG_STRING_MAX (32) static void pr ...

最新文章

  1. ExpressionSet类使用
  2. es的forcemerge——按照天分割
  3. linux查看当前shell的方法
  4. 为什么会有那么多人放弃编程?
  5. java的动态绑定是什么意思_Java的动态绑定机制
  6. 高德再回应导航错误致景区严重拥堵 这次复盘了事件原因
  7. php myadmin 安装
  8. 采用Locust对grpc协议进行压测
  9. web文件上传(二)--使用form还是ajax
  10. CSDN,我!王睿,回来了!!!
  11. 数据库实现原理学习顺序 (持续更新)
  12. 人脸及脸部关键点检测控件
  13. 21个2021年软件开发趋势预测
  14. AI人工智能工程师 的三个层次
  15. 数据类型详解之字符串
  16. centos(5) : centos7 使用yum安装mysql并开启远程连接及重置密码
  17. sparksteaming的idea配置及入门程序
  18. 【旁门Python 01】什么是wheel包,如何去用它?
  19. coco数据集进行裁剪、数据增强过程中的ground_truth bbox的设定以及变化
  20. 微信小程序api基础应用

热门文章

  1. Matlab:创建字符串数组
  2. NX二次开发CreateDialog函数在UI.hxx文件和WinUser.h中的冲突
  3. apollo新增扩展consul注册中心
  4. 全国大学生数学竞赛公式(全)
  5. 信号速率计算(数据速率、比特率、码元速率、符号率、带宽、采样率)
  6. RK3399平台开发系列讲解(其他篇)1.18、瑞芯微 RK3288 芯片介绍
  7. excel自动恢复文档被关闭或者误删除
  8. 支持华为鸿蒙2.0的手机型号是,华为鸿蒙2.0系统支持的手机型号 华为鸿蒙2.0系统详解...
  9. excel换行快捷键_实用 excel 最实用快捷键大全
  10. python win32处理Excel(基础篇)