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实现代码
Oct 10 Python
Python实现霍夫圆和椭圆变换代码详解
Jan 12 Python
Python pymongo模块用法示例
Mar 31 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
python自动保存百度盘资源到百度盘中的实例代码
Aug 26 Python
Python中list循环遍历删除数据的正确方法
Sep 02 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
python实现简单颜色识别程序
Feb 19 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
Jul 09 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 和 HTML
2006/10/09 PHP
php截取后台登陆密码的代码
2012/05/05 PHP
ThinkPHP、ZF2、Yaf、Laravel框架路由大比拼
2015/03/25 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
如何解决PHP获取不到SESSION信息之一般情况
2019/10/10 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
2016/11/09 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
Element Tooltip 文字提示的使用示例
2020/07/26 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
Python常用小技巧总结
2015/06/01 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
运动会广播稿200字
2014/01/15 职场文书
大学生标准自荐书
2014/06/15 职场文书
年度考核登记表个人总结
2015/03/06 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书