【发布时间】:2017-12-05 20:19:27
【问题描述】:
两周以来,我一直在努力阅读以解决这个问题,但我尝试的一切都没有奏效:-(
我使用的是 python 2.7。
据我所知,我确实有一个 base64 字符串,格式为:AAMkADk0ZjU4ODc1LTY1MzAtNDdhZS04NGU5LTAwYjE2Mzg5NDA1ZABGAAAAAAAZS9Y2rt6uTJgnyUZSiNf0BwC6iam6EuExS4FgbbOF87exAAAAdGVuAAC6iam6EuExS4FgbbOF87exAAAxj5dhAAA=
我想将其转换为十六进制字符串。这应该导致00000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E1314B81606DB385F3B7B10000318F97610000
我用下面的代码试了一下:
def itemid_to_entryid(itemid):
decoded_val = base64.b64decode(itemid)
decoded_val = ''.join( ["%02X" % ord(x) for x in decoded_val ] ).strip()
decoded_val = decoded_val.upper()
return decoded_val
itemid = 'AAMkADk0ZjU4ODc1LTY1MzAtNDdhZS04NGU5LTAwYjE2Mzg5NDA1ZABGAAAAAAAZS9Y2rt6uTJgnyUZSiNf0BwC6iam6EuExS4FgbbOF87exAAAAdGVuAAC6iam6EuExS4FgbbOF87exAAAxj5dhAAA='
entryid = itemid_to_entryid(itemid)
print(entryid)
它总是返回以下内容:0003240039346635383837352D363533302D343761652D383465392D30306231363338393430356400460000000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E1314B81606DB385F3B7B10000318F97610000
我真的不明白我做错了什么,非常感谢任何帮助理解我做错的事情。
亲切的问候 本
【问题讨论】:
-
你确定第一个十六进制字符串吗?我不明白为什么它会以这么多 0 开头。
-
您的预期输出只是实际输出的结尾。所以,你应该有一些规则来剪掉你需要的部分。
-
嗯 - 这是给定输入的正确输出...我只想指出
binascii.hexlify(base64.b64decode(itemid)).upper()更直接 -
@ThierryLathuille 哇,你说得对……为什么我没有看到,但为什么我有这么多不必要的前导字符?
-
@JonClements 非常感谢,这真的是一个非常棒的直截了当的代码行
标签: python base64 hex decoding