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的Flask框架中@app.route的用法教程
Mar 31 Python
使用pdb模块调试Python程序实例
Jun 02 Python
利用Python为iOS10生成图标和截屏
Sep 24 Python
Python快速从注释生成文档的方法
Dec 26 Python
使用python实现BLAST
Feb 12 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
python安装pil库方法及代码
Jun 25 Python
Python使用指定端口进行http请求的例子
Jul 25 Python
python调用Matplotlib绘制分布点图
Oct 18 Python
Python 中如何实现参数化测试的方法示例
Dec 10 Python
python实现引用其他路径包里面的模块
Mar 09 Python
Python中使用Lambda函数的5种用法
Apr 01 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
PHP+MySQL插入操作实例
2015/01/21 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
PHP 图片处理
2020/09/16 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
javascript的解析执行顺序在各个浏览器中的不同
2014/03/17 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python字符串和文件操作常用函数分析
2015/04/08 Python
Python中__new__与__init__方法的区别详解
2015/05/04 Python
利用python发送和接收邮件
2016/09/27 Python
Django自带用户认证系统使用方法解析
2020/11/12 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
化工工艺设计求职信
2014/06/25 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书