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 strip()函数 介绍
May 24 Python
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
浅析Python函数式编程
Oct 06 Python
Python第三方Window模块文件的几种安装方法
Nov 22 Python
Python判断是否json是否包含一个key的方法
Dec 31 Python
postman传递当前时间戳实例详解
Sep 14 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
Python3合并两个有序数组代码实例
Aug 11 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的5个安全措施小结
2012/07/17 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
2010/11/11 Javascript
JS判定是否原生方法
2013/07/22 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
2019/05/30 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
2020/07/21 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
python实现的各种排序算法代码
2013/03/04 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
工程班组长岗位职责
2013/12/30 职场文书
安全保证书范文
2014/04/29 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
使用Python获取字典键对应值的方法
2022/04/26 Python