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的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
新手如何快速入门Python(菜鸟必看篇)
Jun 10 Python
Python元字符的用法实例解析
Jan 17 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
python 画二维、三维点之间的线段实现方法
Jul 07 Python
Python简易版图书管理系统
Aug 12 Python
GDAL 矢量属性数据修改方式(python)
Mar 10 Python
Python实现仿射密码的思路详解
Apr 23 Python
经验丰富程序员才知道的8种高级Python技巧
Jul 27 Python
python 多进程和协程配合使用写入数据
Oct 30 Python
Python利用matplotlib绘制折线图的新手教程
Nov 05 Python
tensorflow中的梯度求解及梯度裁剪操作
May 26 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相关资料
2006/10/09 PHP
php 无限极分类
2008/03/27 PHP
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
php的$_FILES的临时储存文件与回收机制实测过程
2013/07/12 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
2016/09/13 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
图片自动更新(说明)
2006/10/02 Javascript
JavaScript 中的replace方法说明
2007/04/13 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
javascript创建动态表单的方法
2015/07/25 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
vant实现购物车功能
2020/06/29 Javascript
python&MongoDB爬取图书馆借阅记录
2016/02/05 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
2014国培学习感言
2014/03/05 职场文书
终止劳动合同协议书
2014/04/14 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript