将十六进制编码的 ASCII 字符串转换为纯 ASCII?

2025-04-15 09:21:00
admin
原创
47
摘要:问题描述:如何在 Python 中将十六进制转换为纯 ASCII?请注意,例如,我想将“0x7061756c”转换为“paul”。解决方案 1:稍微简单的解决方案(仅适用于 Python 2):>>> "7061756c".decode("hex") ...

问题描述:

如何在 Python 中将十六进制转换为纯 ASCII?

请注意,例如,我想将“0x7061756c”转换为“paul”。


解决方案 1:

稍微简单的解决方案(仅适用于 Python 2):

>>> "7061756c".decode("hex")
'paul'

解决方案 2:

无需导入任何库:

>>> bytearray.fromhex("7061756c").decode()
'paul'

解决方案 3:

>>> txt = '7061756c'
>>> ''.join([chr(int(''.join(c), 16)) for c in zip(txt[0::2],txt[1::2])])
'paul'                                                                          

我只是玩得开心,但重要的部分是:

>>> int('0a',16)         # parse hex
10
>>> ''.join(['a', 'b'])  # join characters
'ab'
>>> 'abcd'[0::2]         # alternates
'ac'
>>> zip('abc', '123')    # pair up
[('a', '1'), ('b', '2'), ('c', '3')]        
>>> chr(32)              # ascii to character
' '

现在将查看 binascii...

>>> print binascii.unhexlify('7061756c')
paul

很酷(我不知道为什么其他人要让你经历重重困难才愿意帮助你)。

解决方案 4:

在 Python 2 中:

>>> "7061756c".decode("hex")
'paul'

在 Python 3 中:

>>> bytes.fromhex('7061756c').decode('utf-8')
'paul'

解决方案 5:

b''.fromhex('7061756c')

不使用分隔符

解决方案 6:

这是我使用十六进制整数而不是十六进制字符串时的解决方案:

def convert_hex_to_ascii(h):
    chars_in_reverse = []
    while h != 0x0:
        chars_in_reverse.append(chr(h & 0xFF))
        h = h >> 8

    chars_in_reverse.reverse()
    return ''.join(chars_in_reverse)

print convert_hex_to_ascii(0x7061756c)

解决方案 7:

或者,您也可以这样做...

Python 2 解释器

print "x70 x61 x75 x6c"

例子

user@linux:~# python
Python 2.7.14+ (default, Mar 13 2018, 15:23:44) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.

>>> print "x70 x61 x75 x6c"
p a u l
>>> exit()
user@linux:~# 

或者

Python 2 单行代码

python -c 'print "x70 x61 x75 x6c"'

例子

user@linux:~# python -c 'print "x70 x61 x75 x6c"'
p a u l
user@linux:~# 

Python 3 解释器

user@linux:~$ python3
Python 3.6.9 (default, Apr 18 2020, 01:56:04) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

>>> print("x70 x61 x75 x6c")
p a u l

>>> print("x70x61x75x6c")
paul

Python 3 单行代码

python -c 'print("x70 x61 x75 x6c")'

例子

user@linux:~$ python -c 'print("x70 x61 x75 x6c")'
p a u l

user@linux:~$ python -c 'print("x70x61x75x6c")'
paul

解决方案 8:

在 Python 3.3.2 中测试有很多方法可以实现这一点,这里是最短的方法之一,仅使用 python 提供的内容:

import base64
hex_data ='57696C6C20796F7520636F6E76657274207468697320484558205468696E6720696E746F20415343494920666F72206D653F2E202E202E202E506C656565656173652E2E2E212121'
ascii_string = str(base64.b16decode(hex_data))[2:-1]
print (ascii_string)

当然,如果你不想导入任何东西,你也可以自己写代码。一些非常基本的东西,比如:

ascii_string = ''
x = 0
y = 2
l = len(hex_data)
while y <= l:
    ascii_string += chr(int(hex_data[x:y], 16))
    x += 2
    y += 2
print (ascii_string)

解决方案 9:

无需导入任何东西,尝试这个简单的代码,并举例说明如何将任何十六进制转换为字符串

python hexit.py
Hex it>>some string


 736f6d6520737472696e67

python tohex.py
Input Hex>>736f6d6520737472696e67
some string
cat tohex.py


s=input("Input Hex>>")
b=bytes.fromhex(s)
print(b.decode())
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2634  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1585  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   50  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   49  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   44  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用