Python base64 数据解码和字节顺序转换
我现在正在使用Python的base64模块来解码一个经过base64编码的XML文件。我做的事情是找到每一段数据(里面有成千上万段,比如“ABC....”,这个“ABC...”就是经过base64编码的数据),然后把它们加到一个字符串里,假设这个字符串叫做s。接着,我用base64.b64decode(s)来获取解码的结果。我不太确定解码后的结果是什么,是字符串还是字节?另外,我该如何把这种解码后的数据从所谓的“网络字节序”转换成“主机字节序”?谢谢!
3 个回答
1
这个人有一个很不错的基于Python的b64decode解析器,大家可以去看看这个链接:http://groups.google.com/group/spctools-discuss/browse_thread/thread/a8afd04e1a04cde4
在“Python”中从mzXML提取峰值列表
2
Base64相关的内容,无论是编码过的还是没编码的,都是以字符串的形式存储的。字节顺序的问题只有在处理一些不是字符的数据时才会出现,比如C语言中的整型、短整型、长整型、浮点型等等。至于这些和这个问题有什么关系,我也不太确定。此外,我觉得把多个Base64编码的字符串拼接在一起是不太合适的。
>>> from base64 import *
>>> b64encode( "abcdefg" )
'YWJjZGVmZw=='
>>> b64decode( "YWJjZGVmZw==" )
'abcdefg'
>>> b64encode( "hijklmn" )
'aGlqa2xtbg=='
>>> b64decode( "aGlqa2xtbg==" )
'hijklmn'
>>> b64decode( "YWJjZGVmZw==aGlqa2xtbg==" )
'abcdefg'
>>> b64decode( "YWJjZGVmZwaGlqa2xtbg==" )
'abcdefg\x06\x86\x96\xa6\xb6\xc6\xd6\xe0'
2
每个经过base64编码的字符串都应该单独解码,你不能把多个编码的字符串拼在一起然后得到正确的解码结果。
解码的结果是一个字符串,或者说是字节缓冲区,在Python中它们是等价的。
关于网络/主机顺序,字节的序列并没有所谓的“顺序”(或者叫字节序)——这只有在把这些字节当作更大宽度的字(比如超过8位的整数)来解释时才重要。