Python hex2chars&;chars2hex函数

Python hex2chars&;chars2hex函数,python,python-2.x,Python,Python 2.x,我有一个函数hex2chars: def hex2chars(data): result = ''.join(chr(int(data[i:i + 2], 16)) for i in range(0, len(data), 2)) return result data = '9ede820b31ae92d83be578a7ab8ce906c4ead38943ee73a36e058fac33a0a85861ec46f9cf1ec3d11c0ec8b14aea470c37c1eb8

我有一个函数hex2chars:

def hex2chars(data):
    result = ''.join(chr(int(data[i:i + 2], 16)) for i in range(0, len(data), 2))
    return result

data = '9ede820b31ae92d83be578a7ab8ce906c4ead38943ee73a36e058fac33a0a85861ec46f9cf1ec3d11c0ec8b14aea470c37c1eb87375aca94d9b214e90a0b73f8214d929675768c3d88c95b5618438685ec99cf50ccd846902be6104335482c1ae0136f2dfcfd97e072c38c8d142c9f92f25f3b911bac5beaa51184eb1e6c3169b3b58ec8e094b988648136f6b4bde59def0bce7f03e0cf321f95d067e3319f31dd099513c0d7'

如何创建chars2hex函数?

反向转换很容易。您只需使用
ord
,即
chr
的反函数,并将结果格式化为2位十六进制:

def hex2chars(data):
    return ''.join([chr(int(data[i:i + 2], 16)) for i in range(0, len(data), 2)])

def chars2hex(data):
    return ''.join(['%02x' % ord(c) for c in data])

data = '9ede820b31ae92d83be578a7ab8ce906c4ead38943ee73a36e058fac33a0a85861ec46f9cf1ec3d11c0ec8b14aea470c37c1eb87375aca94d9b214e90a0b73f8214d929675768c3d88c95b5618438685ec99cf50ccd846902be6104335482c1ae0136f2dfcfd97e072c38c8d142c9f92f25f3b911bac5beaa51184eb1e6c3169b3b58ec8e094b988648136f6b4bde59def0bce7f03e0cf321f95d067e3319f31dd099513c0d7'

s = hex2chars(data)
new_data = chars2hex(s)
print data == new_data
输出

True
注意,在Python3中需要使用不同的方法


但是,不需要自己编写这些函数:您可以使用标准模块中的函数来编写在Python 2或Python 3上正常工作的代码。

欢迎使用StackExchange!请确保您在问题中放置的代码是可运行的。在你的情况下,缩进是坏的。我会编辑它,但以后请避免这种情况。另外,你对你的问题有什么想法,有没有尝试过的代码?您还应该明确输入和输出所需的数据格式:这个问题有几种可能的解决方法。您的行
data=
不是正确的Python代码。data是stringmohammad,当我使用int(chars,16)时,我看到ValueError,chars它是函数的结果hex2chars@Viacheslav别担心!