反复在几个环境上折腾码流的拼装解析和可读化打印,总是遇到hex字符串和bytes之间的转换,记录在这里吧。

1. 在Python2.7.x上(更老的环境真心折腾不起),hex字符串和bytes之间的转换是这样的:

>>> a = 'aabbccddeeff'
>>> a_bytes = a.decode('hex')
>>> print(a_bytes)
b'\xaa\xbb\xcc\xdd\xee\xff'
>>> aa = a_bytes.encode('hex')
>>> print(aa)
aabbccddeeff
>>>

在python 3环境上,因为string和bytes的实现发生了重大的变化,这个转换也不能再用encode/decode完成了。

2.在python3.5之前,这个转换的其中一种方式是这样的:

# 当字符串是全部是十六进制的数字字母时 此方可可行
>>> a = 'aabbccddeeff'
>>> a_bytes = bytes.fromhex(a)
>>> print(a_bytes)
b'\xaa\xbb\xcc\xdd\xee\xff'
>>> aa = ''.join(['%02x' % b for b in a_bytes])
>>> print(aa)
aabbccddeeff
>>># 当字符串不是十六进制的数字字母时 此方法可行
>>> a = 'hello'
>>> a_bytes =bytes(a,encoding='utf8')
>>> a_bytes =''.join(['\\x%02X' % b for b in a_bytes ])
>>> print(a_bytes)
\x68\x65\x6C\x6C\x6F

3.到了python 3.5之后,就可以像下面这么干了:

# 当字符串是全部是十六进制的数字字母时 此方可可行
>>> a = 'aabbccddeeff'
>>> a_bytes = bytes.fromhex(a)
>>> print(a_bytes)
b'\xaa\xbb\xcc\xdd\xee\xff'
>>> aa = a_bytes.hex()
>>> print(aa)
aabbccddeeff
>>># 当字符串不是十六进制的数字字母时 此方法可行
>>> a = 'hello'
>>> a_bytes =bytes(a,encoding='utf8')
>>> a_bytes =''.join(['\\x%02X' % b for b in a_bytes ])
>>> print(a_bytes)
\x68\x65\x6C\x6C\x6F

python3 python2 字符串与hex互转区别相关推荐

  1. php7和python3性能对比-python2.7和3.7的区别

    区别一:print语法使用 Python2.7 print语法使用 >>> print "Hello Python" Python3.7 print语法使用 &g ...

  2. Python3 字符串与hex之间的相互转换

    在字符串转换上,python2和python3是不同的,在查看一些python2的脚本时候,总是遇到字符串与hex之间之间的转换出现问题,记录一下解决方法. 1. 在Python2.7.x上,hex字 ...

  3. 一篇文章助你理解Python3中字符串编码问题

    前几天给大家介绍了unicode编码和utf-8编码的理论知识,以及Python2中字符串编码问题,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系和一篇文章助你理解 ...

  4. python2字符串编码方式_一、基础部分-2.字符串编码

    一.字符编码历史 1. ASCII 美国人搞了个ASCII码表,把123abcABC%$#(数字.字母.特殊符号) ,全部用10进制的数字表示.例如数字65,代表着"A" ,ASC ...

  5. python3.0与2.x之间的区别

    python3.0与2.x之间的区别: 1.性能 Py3.0运行pystone benchmark的速度比Py2.5慢30%.Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好 ...

  6. ubuntu python3.7修改默认pip版本_详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本 安装python3后使用pip和pip3的区别...

    Python3.4已经默认安装了pip为什么执行不了我的谁说过,念念不忘就该放.但我也记得你说过,爱一个人不是一天两天的事. 如何升级到python3版本并且安装pip3 确保你的系统上已经安装好了 ...

  7. Python中字符串和二进制互转

    Python中字符串和二进制互转 最近在搞图形相关的东西,有时候操作涉及到每个 比特 的操作,所以必须实现一个方法(将字符串二值化),就是把字符串转换成为二进制形式.搜索了一些相关的实现,但是本篇只对 ...

  8. 十六进制字符串与中文互转

    十六进制字符串与中文互转 前言:有时候在做数据分析的时候会遇到一些二进制数据文件或者在进行tcp/udp通信的时候经常需要把数据转化成字节数据,其中包含了中文数据,但网上查找半天不知道怎么去解析这些数 ...

  9. python3 format函数_Python学习教程:Python3之字符串格式化format函数详解(上)

    Python学习教程:Python3之字符串格式化format函数详解(上) 概述 在Python3中,字符串格式化操作通过format()方法或者f'string'实现.而相比于老版的字符串格式化方 ...

最新文章

  1. 使用jQuery操作DOM
  2. Build Docker image of a Python Flask app【转载】
  3. MySQL查询时通过修改字段的排序规则来忽略大小写的操作讲解
  4. 微信多开工具 可以同时在电脑上打开多个微信 免费开源
  5. Linux I/O复用之select函数详解
  6. 安装ARM交叉编译工具
  7. 教你在 CentOS 8上安装GCC实现开发编译功能
  8. [解决方案]Window 2008 R2 + IIS7.5 + VS2013 错误代码 0x80070002
  9. 爬虫项目——m3u8后缀的电影
  10. Android qemu pipe高速管道(九)
  11. CreateProcess()无法启动应用?
  12. oracle _db_block_write_batch,Oracle体系结构----实例的进程结构
  13. css中关于旋转属性trtransform: rotate影响文字轻微变形的解决办法。
  14. 使用CSS实现图片叠加效果
  15. 十大管理概念(背诵)
  16. Android6.0M权限管理实战,完美轻量级封装
  17. 学计算机的心理300字,心理作文300字3篇
  18. 人工智能正在改变音乐产业
  19. audio音频播放标签样式优化自定义
  20. 中国互联网公司都要国际化,美图如何成为出海的另类?

热门文章

  1. python中类的嵌套_python类的嵌套
  2. DPI — Application Assurance — Overview
  3. Python Module_Socket_网络编程
  4. KVM 虚拟化架构和实现原理
  5. MDK编译后生成bin文件占用FLASH大小说明
  6. linux系统巡检脚本
  7. spark (java API) 在Intellij IDEA中开发并运行
  8. 《JavaScript高级程序设计》节点层次和DOM操作技术
  9. hdu1285 拓扑排序+优先队列
  10. Django使用Social-Auth实现微信第三方网站扫码登录