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树的概念
- 下一篇: c语言删除文件中的数据_第20问:删除了