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获取糗百图片代码实例
Dec 18 Python
python基础之包的导入和__init__.py的介绍
Jan 08 Python
python 显示数组全部元素的方法
Apr 19 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
python使用turtle库绘制树
Jun 25 Python
Numpy之文件存取的示例代码
Aug 03 Python
Python设计模式之迭代器模式原理与用法实例分析
Jan 10 Python
Python秒算24点实现及原理详解
Jul 29 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
Feb 05 Python
Python @property及getter setter原理详解
Mar 31 Python
Python基于paramunittest模块实现excl参数化
Apr 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 HtmlReplace输入过滤安全函数
2010/07/03 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
2010/05/18 Javascript
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
javascript中html字符串转化为jquery dom对象的方法
2015/08/27 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
Angular ng-class详解及实例代码
2016/09/19 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
Python爬取APP下载链接的实现方法
2016/09/30 Python
python距离测量的方法
2018/03/06 Python
python中altair可视化库实例用法
2021/01/26 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
咖啡店自主创业商业计划书
2014/01/22 职场文书
学校班班通实施方案
2014/06/11 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
考试作弊检讨
2015/01/27 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
Python使用Web框架Flask开发项目
2022/06/01 Python
ubuntu开机后ROS程序自启动问题
2022/12/24 Servers