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爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
python 采集中文乱码问题的完美解决方法
Sep 27 Python
Python pymongo模块用法示例
Mar 31 Python
python基础教程项目二之画幅好画
Apr 02 Python
Python----数据预处理代码实例
Mar 20 Python
Python进度条的制作代码实例
Aug 31 Python
对python中return与yield的区别详解
Mar 12 Python
Python3读写ini配置文件的示例
Nov 06 Python
python中time包实例详解
Feb 02 Python
Django+Celery实现定时任务的示例
Jun 23 Python
利用Matlab绘制各类特殊图形的实例代码
Jul 16 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 07 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
php实现短信发送代码
2015/07/05 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
python使用代理ip访问网站的实例
2018/05/07 Python
python实现名片管理系统
2018/11/29 Python
python基于opencv检测程序运行效率
2019/12/28 Python
新加坡时尚网上购物:Zalora新加坡
2016/07/26 全球购物
AJAX的全称是什么
2012/11/06 面试题
化工机械应届生求职信
2013/11/04 职场文书
校园安全检查制度
2014/02/03 职场文书
校园安全教育广播稿
2014/02/17 职场文书
计算机学生的自我评价分享
2014/02/18 职场文书
对教师的评语
2014/04/28 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python
MySQL 数据表操作
2022/05/04 MySQL