欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python decode hex_在python2.7中使用b64decode()将base64转换为hex

发布时间:2025/4/17 python 134 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。