如何从python中的字符串解码十六进制值

时间:2018-07-25 21:52:45

标签: python string hex decode

我正在尝试解码字符串中的十六进制值,因此最后我只有一个“可读”字符串。

例如:

encoded_string = 'videoplayback%253Fexpire%253D1532566750%2526mime%253Dvideo%25252Fmp4%2526key%253Dyt6%2526mt%253D1532544983%2526fvip%253D5%2526i'

每个十六进制值均以%符号表示,并且值的长度可以区分。 我试图手动解码字符串:

encoded_string = encoded_string.replace('%253A', '\x25\x3A')
encoded_string = encoded_string.replace('%252F', '\x25\x2F')
encoded_string = encoded_string.replace('%253F', '\x25\x3F')
encoded_string = encoded_string.replace('%253D1532566750', '\x25\x3D\x15\x32\x56\x67\x50')

现在,我需要一个能够找到十六进制值并将其解码的函数的帮助。

谢谢你们!

2 个答案:

答案 0 :(得分:2)

工作太多。

>>> urllib.parse.unquote(urllib.parse.unquote(encoded_string))
'videoplayback?expire=1532566750&mime=video%2Fmp4&key=yt6&mt=1532544983&fvip=5&i'

答案 1 :(得分:0)

您可以为此使用正则表达式:

re.sub(
    r'%([A-F0-9]{4,14})',
    lambda m: str(int(m.groups()[0], 16)),
    encoded_string
)

尽管我不确定您是否只想进行URL解码?