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群发邮件实例代码
Jan 03 Python
用Python实现服务器中只重载被修改的进程的方法
Apr 30 Python
bat和python批量重命名文件的实现代码
May 19 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
python利用百度AI实现文字识别功能
Nov 27 Python
pandas 数据结构之Series的使用方法
Jun 21 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
什么是python类属性
Jun 10 Python
PyTorch如何搭建一个简单的网络
Aug 24 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 文件上传实例代码
2012/04/19 PHP
PHP里的单例类写法实例
2015/06/25 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
Laravel5.4简单实现app接口Api Token认证方法
2019/08/29 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
Javascript中的call()方法介绍
2015/03/15 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
JavaScript保留关键字汇总
2015/12/01 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
JavaScript必知必会(十) call apply bind的用法说明
2016/06/08 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
浅谈React高阶组件
2018/03/28 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
2018/04/18 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
[01:10:24]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第一场 2月28日
2021/03/11 DOTA
十个Python程序员易犯的错误
2015/12/15 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
护理专业毕业生推荐信
2013/10/31 职场文书
实习教师自我鉴定
2013/12/12 职场文书
大学生学习自我评价
2014/01/13 职场文书
司马光教学反思
2014/02/01 职场文书
关于运动会广播稿300字
2014/10/05 职场文书
MySQL如何使备份得数据保持一致
2022/05/02 MySQL
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers