Python实现将16进制字符串转化为ascii字符的方法分析


Posted in Python onJuly 21, 2017

本文实例讲述了Python实现将16进制字符串转化为ascii字符的方法。分享给大家供大家参考,具体如下:

字符串456e633064316e675f31735f66336e,通过Python,按照两个字符,例如45,6e,63形式变成ascii码格式,输出acsii码格式的字符串。

代码如下:

a = "456e633064316e675f31735f66336e"
''.join([chr(int(b, 16)) for b in [a[i:i+2] for i in range(0, len(a), 2)]])

拆分了代码,实际运行了一下,解释一下代码的意思:

1、

[a[i:i+2] for i in range(0, len(a), 2)]

这段是lamda表达式,说白了,就是一个for循环,范围是从0开始到a字符串的长度,每次步进2,也就是第一次是0,第二次是2,第三次是4。。。

相应的 a[i:i+2],就是第一次从a里取出0:0+2 也就是0:2,那么实际上类似于数组,也就是取出a字符串的前面2个字符,注意这里0:2 实际上是不包含2的,只是0、1而已。

然后,外面的一层[ ]的意思就是把循环的返回结果放到一个 列表里,列表就是[]包含在内的,用逗号分隔的串。但是这样表达式可以起到简化代码的作用。

实际结果就是:

======================== C:\c - 副本 (2).py ========================
['45', '6e', '63', '30', '64', '31', '6e', '67', '5f', '31', '73', '5f', '66', '33', '6e']

2、

[chr(int(b, 16)) for b in [a[i:i+2] for i in range(0, len(a), 2)]]

这个外层的for循环就是把内存的for循环结果 :

['45', '6e', '63', '30', '64', '31', '6e', '67', '5f', '31', '73', '5f', '66', '33', '6e']

再次遍历一遍,就是每次从这个列表里取出一个元素,这里就是b,然后对b进行转化,这里int(b,16)表示 b是一个16进制的数字,把这个数字转化为int整型,然后chr函数把这个整数转化为字符,也就是ascii字符。

结果为:

['E', 'n', 'c', '0', 'd', '1', 'n', 'g', '_', '1', 's', '_', 'f', '3', 'n']

3、

''.join([chr(int(b, 16)) for b in [a[i:i+2] for i in range(0, len(a), 2)]])

就是用‘'空串,把后面的 ['E', 'n', 'c', '0', 'd', '1', 'n', 'g', '_', '1', 's', '_', 'f', '3', 'n'] 列表中的每个元素,join串联在一起。

最后的结果就是:Enc0d1ng_1s_f3n

4、另一种写法

a = "456e633064316e675f31735f66336e"
al = []
for i in range(0, len(a), 2):
  b = a[i:i+2]
  al.append(chr(int(b, 16)))
print ''.join(al)
Python 相关文章推荐
python读取注册表中值的方法
Apr 08 Python
python3.3实现乘法表示例
Feb 07 Python
Python操作串口的方法
Jun 17 Python
python中利用h5py模块读取h5文件中的主键方法
Jun 05 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
详解重置Django migration的常见方式
Feb 15 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
Python Socket TCP双端聊天功能实现过程详解
Jun 15 Python
python中Django文件上传方法详解
Aug 05 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
python3中apply函数和lambda函数的使用详解
Feb 28 Python
Python使用BeautifulSoup4修改网页内容
May 20 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 #Python
python僵尸进程产生的原因
Jul 21 #Python
python下载图片实现方法(超简单)
Jul 21 #Python
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
Jul 20 #Python
Python使用内置json模块解析json格式数据的方法
Jul 20 #Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 #Python
Python函数式编程
Jul 20 #Python
You might like
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
树型结构列出指定目录里所有文件的PHP类
2006/10/09 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
PHP通过插入mysql数据来实现多机互锁实例
2014/11/05 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
2020/05/25 PHP
JQuery用户名校验的具体实现
2016/03/18 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
jQuery窗口拖动功能的实现代码
2017/02/04 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
2019/04/16 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
python基础教程之对象和类的实际运用
2014/08/29 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
python 统计代码行数简单实例
2017/05/04 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
python中单下划线(_)和双下划线(__)的特殊用法
2019/08/29 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
python生成并处理uuid的实现方式
2020/03/03 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
python 实现Harris角点检测算法
2020/12/11 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
环境工程毕业生自荐信
2013/11/17 职场文书
实现中国梦思想汇报2014
2014/09/13 职场文书
2014派出所所长群众路线对照检查材料思想汇报
2014/09/18 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL