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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
python抓取网页内容示例分享
Feb 24 Python
Python实现的石头剪子布代码分享
Aug 22 Python
Python入门篇之对象类型
Oct 17 Python
python实现ipsec开权限实例
Nov 11 Python
利用python爬取软考试题之ip自动代理
Mar 28 Python
python读取文件名称生成list的方法
Apr 27 Python
python3.5 email实现发送邮件功能
May 22 Python
python3 pathlib库Path类方法总结
Dec 26 Python
Python中包的用法及安装
Feb 11 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
May 10 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 has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
解析isset与is_null的区别
2013/08/09 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
2015/01/22 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
PHP创建XML接口示例
2019/07/04 PHP
XP折叠菜单&仿QQ2006菜单
2006/12/16 Javascript
javascript 获取网页参数系统
2008/07/19 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python+matplotlib实现计算两个信号的交叉谱密度实例
2018/01/08 Python
python安装requests库的实例代码
2019/06/25 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
python实现广度优先搜索过程解析
2019/10/19 Python
python中元组的用法整理
2020/06/15 Python
全球高级音频和视频专家:HiDef Lifestyle
2019/08/02 全球购物
幼儿园元旦家长感言
2014/02/27 职场文书
保险内勤岗位职责
2014/04/05 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
辞职信格式模板
2015/02/27 职场文书
python实现自动化群控的步骤
2021/04/11 Python
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS