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 25 Python
python3个性签名设计实现代码
Jun 19 Python
python numpy 显示图像阵列的实例
Jul 02 Python
python使用zip将list转为json的方法
Dec 31 Python
pycharm 实现显示project 选项卡的方法
Jan 17 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
Python3批量生成带logo的二维码方法
Jun 24 Python
python模拟菜刀反弹shell绕过限制【推荐】
Jun 25 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
在OpenCV里使用Camshift算法的实现
Nov 22 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
用Python实现Newton插值法
Apr 17 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开发中页面乱码的产生与解决
2008/03/27 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
laravel 使用auth编写登录的方法
2019/09/30 PHP
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
jquery的$getjson调用并获取远程的JSON字符串问题
2012/12/10 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
浅析Python编写函数装饰器
2016/03/18 Python
详解Python进程间通信之命名管道
2017/08/28 Python
python实现控制台打印的方法
2019/01/12 Python
python爬取音频下载的示例代码
2020/10/19 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
利用HTML5+CSS3实现3D转换效果实例详解
2017/05/02 HTML / CSS
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
Shell编程面试题
2012/05/30 面试题
后勤服务中心总经理工作职责
2014/03/03 职场文书
家长对老师的感言
2014/03/11 职场文书
年终总结会主持词
2014/03/25 职场文书
学生无故旷课检讨书
2014/09/20 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
2014年银行柜员工作总结
2014/11/12 职场文书
大学入学感言
2015/08/01 职场文书
餐厅营销的秘密:为什么老顾客会流水?
2019/08/08 职场文书
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers