将Hex转换为Base64 Python时发生编码错误



我目前正在启动python,并正在编写一个程序,该程序将转换一个给定的长十六进制数字符串,该字符串应成对分隔。我很难使用蟒蛇的编码功能。

到目前为止,我已经:

import base64
def splitByTwo(str):
    return [i+j for i,j in zip(list(str)[::2], list(str)[1::2])]
def bytesToBase64(str):
    b64List = []
    stringsByTwo = splitByTwo(str.upper())
    for x in stringsByTwo:
        b64List.insert(stringsByTwo.index(x), base64.b16decode(x))
    return b64List
print(bytesToBase64("49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d"))

我可以让它打印[b'I', b"'", b'm', b'm', b'm', b' ', b' ',.....],但我不确定bytesToBase64()方法的base64部分的编码/解码有什么问题。

您的bytesToBase64函数返回由给定十六进制字符串表示的字节列表(由于使用了insert而不是append,所以有点混乱)。您还没有完成base64编码部分。

修复现有功能:

def bytesToBase64(str):
    b64List = []
    stringsByTwo = splitByTwo(str.upper())
    for x in stringsByTwo:
        b64List.append(base64.b16decode(x))
    print base64.b64encode("".join(b64List))

但是这个功能不是很地道。完全重写:

def bytesToBase64(s):
    return base64.b64encode(binascii.unhexlify(s))

最新更新