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和php通信乱码问题解决方法
Apr 15 Python
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
Jul 14 Python
浅谈Python中数据解析
May 05 Python
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
python中模块查找的原理与方法详解
Aug 11 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
python UDP(udp)协议发送和接收的实例
Jul 22 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
May 10 Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 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
PHP6 先修班 JSON实例代码
2008/08/23 PHP
php 友好URL的实现(吐血推荐)
2008/10/04 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
php array_map()函数实例用法
2021/03/03 PHP
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
jQuery选择器用法实例详解
2015/12/17 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
2016/06/24 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
Python实现读取json文件到excel表
2017/11/18 Python
微信跳一跳游戏python脚本
2020/04/01 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
python中的插入排序的简单用法
2021/01/19 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
说一下Linux下有关用户和组管理的命令
2014/08/18 面试题
大学生演讲稿
2014/04/25 职场文书
护士2015年终工作总结
2015/04/29 职场文书
2019中小学生安全过暑期倡议书
2019/06/24 职场文书
女性励志书籍推荐
2019/08/19 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记