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程序设计有所帮助。

标签:Python,进制,ascii
0
投稿

猜你喜欢

  • 使用FSO把文本信息导入数据库

    2007-09-27 20:20:00
  • python中如何实现链式调用

    2021-05-06 08:42:29
  • golang 实现每隔几分钟执行一个函数

    2024-05-22 17:48:14
  • 一篇文章了解Python中常见的序列化操作

    2023-01-22 05:22:20
  • Python matplotlib以日期为x轴作图代码实例

    2021-08-17 03:41:09
  • 浅析Python requests 模块

    2023-04-28 17:45:18
  • 如何创建CSS的对象,获取合适的粒度

    2010-07-09 13:10:00
  • Go使用sync.Map来解决map的并发操作问题

    2024-04-29 13:05:57
  • MySQL如何设置某个字段的值自增

    2024-01-27 09:49:09
  • python网络编程学习笔记(四):域名系统

    2021-07-15 10:16:49
  • 提高MySQL查询效率的三个技巧

    2009-02-11 13:19:00
  • scrapy在python爬虫中搭建出错的解决方法

    2023-08-24 12:45:23
  • pycharm开发一个简单界面和通用mvc模板(操作方法图解)

    2022-10-09 06:28:39
  • SQL Server转换为XQuery及反向转换

    2009-01-20 13:32:00
  • tensorflow 限制显存大小的实现

    2023-03-04 02:19:59
  • 如何用Python对数学函数进行求值、求偏导

    2023-10-13 04:58:01
  • 基于生活形态的用户分群研究

    2009-12-30 16:54:00
  • 通过python扫描二维码/条形码并打印数据

    2022-03-12 11:32:32
  • 快速掌握ASP+Access数据库的18条安全法则

    2008-11-28 15:08:00
  • 详解python __init__.py 和 __all__作用

    2023-08-22 06:55:22
  • asp之家 网络编程 m.aspxhome.com