Python实现将16进制字符串转化为ascii字符的方法分析
作者:不想长大啊 发布时间:2023-11-17 12:26:25
本文实例讲述了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)
PS:这里再为大家推荐几款相关工具供大家参考使用:
ASCII码对照表:
http://tools.jb51.net/table/ascii
Native/ASCII在线编码转换工具:
http://tools.jb51.net/transcoding/native2ascii
在线中文汉字/ASCII码/Unicode编码互相转换工具:
http://tools.jb51.net/transcoding/chinese2unicode
在线任意进制转换工具:
http://tools.jb51.net/transcoding/hexconvert
在线RGB颜色值与十六进制颜色码转换工具:
http://tools.jb51.net/color/rgb_hex_color
希望本文所述对大家Python程序设计有所帮助。
猜你喜欢
- 在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送,令牌桶算法就实现了这个功能, 可控制发送到网络上
- 常用php函数实现及介绍countcount是我们经常用到的一个函数,其功能是返回一个数组的长度。count这个函数,其复杂度是多少呢? 一
- 抽象工厂模式(Abstract Factory Pattern):属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负
- 函数,对于人类来讲,能够发展到这个数学思维层次,是一个飞跃。可以说,它的提出,直接加快了现代科技和社会的发展,不论是现代的任何科技门类,乃至
- 在windows+iis服务器上运行asp程序可能会出现数据库无法更新的情况,具体错误信息可能为: 1、Microsoft JET Data
- 1. 原理简介原理很简单,就是获取视频资源的源地址,然后爬取视频的二进制内容,再写入到本地即可。2. 网页分析打开该网页,然后F12进入开发
- 方法1: X:\oracle\ora81\bin\wrap iname=XXX oname=XXX 方法2:9i在win2000下使用wra
- 对于中小型个人、企业网站来说,MySQL数据库或许是目前数据库的最完美实施解决方案了。在不变更服务器硬件的前提下,一个经过良好架构,优化后的
- Python:获取“ 3年前的今天”的日期时间Python: get datetime for
- 换脸!这段时间,deepfakes搞得火热,比方说把《射雕英雄传》里的朱茵换成了杨幂,看下面的图!毫无违和感!其实早在之前,基于AI换脸的技
- 首先新建一个dataframe:In[8]: df = pd.DataFrame({'name':list('ABC
- 实例如下所示:#coding=utf-8import jsonimport geventfrom django.http import Ht
- 是因工作需要做的一个批量修改代码的小东西,拿出来与大家分享。 目前可以处理的文件类型:.asp .inc .htm .html
- 因工作需要,最近在学习使用python来解析各种文件,包括xmind,xml,excel,csv等等。在学习python解析XML的时候看到
- 本文介绍了利用Python实现Windows下的鼠标键盘模拟的实例代码,分享给大家本来用按键精灵是可以实现我的需求,而且更简单,但既然学py
- 第五个页面name="changenick.php" <? include &q
- 阅读上一章:[翻译]标记语言和样式手册 Chapter 15 为body指定样式Chapter 16 下一步现在你知道了如何使用标准改进你的
- pycharm安装lxml库失败怎么办?众所周知,在pycharm中安装lxml库,一般的安装流程流程为file->settings-
- 相信没有人不知道 Firebug 是什么东西,但有时候我们糟糕的代码不想让同行轻松的使用 F12 就能一览无遗。那么怎么办呢?这里有个猥琐的
- 1.什么是接口接口就是一种规范与标准,在生活中经常见接口,例如:笔记本电脑的USB接口,可以将任何厂商生产的鼠标与键盘,与电脑进行链接。为什