python decode hex_在python2.7中使用b64decode()将base64转换为hex
解决方案
实际上,以下3种方法在Python2.7中有效:b64 = "/6o="
#1
b16 = b64.decode('base64')
print repr(b16) # '\xff\xaa'
import base64
#2
b16 = base64.b64decode(b64)
print repr(b16) # '\xff\xaa'
#3
b16 = base64.decodestring(b64)
print repr(b16) # '\xff\xaa'
有了它们,您将得到十六进制表示的字节。
如果需要,可以将字节转换为所需的输出,例如:
^{pr2}$
但请注意-现在是其他字节:print 'FFAA' == '\xff\xaa' # False
总结一下,最快的解决方案(不需要导入):b64 = "/6o="
print b64.decode('base64').encode('hex').upper() # 'FFAA'
了解问题。
请注意,我在打印输出中使用了repr()。
您的问题是由于这样一个事实:当我们使用print-语句时,str-type(实际上是2.7中的字节),
首先,Python试图使用依赖于环境的编码将其解码为unicode-type。
例如,我的Ubuntu和Win10终端在解码字节时的区别如下:
这种行为的原因是'\xff\xaa'不是一个有效的UTF-8字节序列,因此不能用这种编码将其解码为字符。在这种情况下,错误被一个符号取代。
同时,这些字节在cp1251中是有效的,我们可以看到解码的结果。
顺便说一下,你可以用下面的表达式得到你在问题中描述的结果:print unicode('\xff\xaa', 'utf-8', errors='replace')
输出:)
据我所知,这正是Python在您的案例中所做的。在
总结
以上是生活随笔为你收集整理的python decode hex_在python2.7中使用b64decode()将base64转换为hex的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: python 树_Python树的概念
- 下一篇: python中提供怎样的内置库、可以用来