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中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
Python语言的面相对象编程方式初步学习
Mar 12 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
Python TestCase中的断言方法介绍
May 02 Python
详解python播放音频的三种方法
Sep 23 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
python 的numpy库中的mean()函数用法介绍
Mar 03 Python
golang中的空接口使用详解
Mar 30 Python
python文本处理的方案(结巴分词并去除符号)
May 26 Python
Python道路车道线检测的实现
Jun 27 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
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
sql注入与转义的php函数代码
2013/06/17 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
Seajs源码详解分析
2019/04/02 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
浅析Python中的序列化存储的方法
2015/04/28 Python
使用Python的内建模块collections的教程
2015/04/28 Python
Python实现合并字典的方法
2015/07/07 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
python语言基本语句用法总结
2019/06/11 Python
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
中学学校门卫岗位职责
2014/08/15 职场文书
离婚协议书的范本
2015/01/27 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
原生JS实现分页
2022/04/19 Javascript
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL