python base64转换为十六进制 [英] python base64 to hex

查看:279
本文介绍了python base64转换为十六进制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

两个星期以来,我一直在尝试并阅读以解决此问题,但我尝试的所有方法均无效:-(

我正在使用python 2.7.

据我了解,

我确实有一个base64字符串,其格式为:

我想将其转换为十六进制字符串.这应该导致 00000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E1314B81606DB385F3B7B10000318F97610000

我用以下代码尝试过:

  def itemid_to_entryid(itemid):encoded_val = base64.b64decode(itemid)encoded_val =''.join([x.decoded_val中的[%02X"%ord(x)]).strip()coded_val = decoded_val.upper()返回decoded_valitemid ='AAMkADk0ZjU4ODc1LTY1MzAtNDdhZS04NGU5LTAwYjE2Mzg5NDA1ZABGAAAAAAAZS9Y2rt6uTJgnyUZSiNf0BwC6iam6EuExS4FgbbOF87ex87AdAAAFjentryid = itemid_to_entryid(itemid)打印(entryid) 

总是会返回以下内容: 0003240039346635383837352D363533302D343761652D383465392D30306231363338393430356400460000000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B1B000B6B76B

我真的不知道我做错了什么,真的很感谢能帮助我理解我做错了什么.

亲切的问候本

解决方案

将base64转换为十六进制字符串的最佳方法是:

 #Python 2>>>base64.b64decode('woidjw ==').encode('hex')#Python 3>>>base64.b64decode('woidjw ==').hex()'c2889d8f' 

您也可以像这样尝试它:

 >>>base64.b64decode('woidjw ==') 

但我不是输出的粉丝:

 '\ xc2 \ x88 \ x9d \ x8f' 

就您的原始请求而言,您的初始数据一定有问题,因为它不会产生您期望的数据:

 >>>base64.b64decode( 'AAMkADk0ZjU4ODc1LTY1MzAtNDdhZS04NGU5LTAwYjE2Mzg5NDA1ZABGAAAAAAAZS9Y2rt6uTJgnyUZSiNf0BwC6iam6EuExS4FgbbOF87exAAAAdGVuAAC6iam6EuExS4FgbbOF87exAAAxj5dhAAA =').编码( '六角')'0003240039346635383837352d363533302d343761652d383465392d30306231363338393430356400460000000000194bd636aedeae4c9827c9465288d7f40700ba89a9ba12e1314b81606db385f3b7b100000074656e0000ba89a9ba12e1314b81606db385f3 

Since two weeks, I'm trying and reading to solve this problem, but everything I tried didn't worked :-(

I'm using python 2.7.

I do have, as far as I understand, a base64-string from the format: AAMkADk0ZjU4ODc1LTY1MzAtNDdhZS04NGU5LTAwYjE2Mzg5NDA1ZABGAAAAAAAZS9Y2rt6uTJgnyUZSiNf0BwC6iam6EuExS4FgbbOF87exAAAAdGVuAAC6iam6EuExS4FgbbOF87exAAAxj5dhAAA=

I want to convert it to a hex-string. Which should result in 00000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E1314B81606DB385F3B7B10000318F97610000

I tried it with the following code:

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)

which always returns me the following: 0003240039346635383837352D363533302D343761652D383465392D30306231363338393430356400460000000000194BD636AEDEAE4C9827C9465288D7F40700BA89A9BA12E1314B81606DB385F3B7B100000074656E0000BA89A9BA12E1314B81606DB385F3B7B10000318F97610000

and I really don't get, what I'm doing wrong and really would appreciate any help in understanding what I'm doing wrong.

Kind regards Ben

解决方案

The best way for converting base64 to hex string is:

# Python 2
>>> base64.b64decode('woidjw==').encode('hex')
# Python 3
>>> base64.b64decode('woidjw==').hex()
'c2889d8f'

You can also try it just like this:

>>> base64.b64decode('woidjw==')

but I am not a fan of the output:

'\xc2\x88\x9d\x8f'

As far as your original request goes, there must be something wrong with your initial data, as it does not result in data that you expected:

>>> base64.b64decode('AAMkADk0ZjU4ODc1LTY1MzAtNDdhZS04NGU5LTAwYjE2Mzg5NDA1ZABGAAAAAAAZS9Y2rt6uTJgnyUZSiNf0BwC6iam6EuExS4FgbbOF87exAAAAdGVuAAC6iam6EuExS4FgbbOF87exAAAxj5dhAAA=').encode('hex')

'0003240039346635383837352d363533302d343761652d383465392d30306231363338393430356400460000000000194bd636aedeae4c9827c9465288d7f40700ba89a9ba12e1314b81606db385f3b7b100000074656e0000ba89a9ba12e1314b81606db385f3b7b10000318f97610000'

这篇关于python base64转换为十六进制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆