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

2025-04-15 09:21:00
admin
原创
41
摘要:问题描述:如何在 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大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

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

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

云端的项目管理软件

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

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

内置subversion和git源码管理

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

免费试用