Python converting from base64 to binary

前端 未结 2 1494
挽巷
挽巷 2021-01-11 09:10

I have a problem about converting a base64 encoded string into binary. I am collecting the Fingerprint2D in the following link,

url = \"https://pubchem.ncbi.         


        
2条回答
  •  半阙折子戏
    2021-01-11 09:54

    To decode base64 format you need to pass a bytes object to the base64.decodebytes function:

    import base64
    
    t = "AAADccB6OAAAAAAAAAAAAAAAAAAAAAAAAAA8WIEAAAAAAACxAAAAHgAACAAADAzBmAQwzoMABgCI AiTSSACCCAAhIAAAiAEMTMgMJibMsZuGeijn4BnI+YeQ0OMOKAACAgAKAABQAAQEABQAAAAAAAAA AA==".encode("ascii")
    
    decoded = base64.decodebytes(t)
    
    print(decoded)
    print(len(decoded)*8)
    

    I get the following:

    b'\x00\x00\x03q\xc0z8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00

    So 920 bits as expected.

    To get data as binary just iterate on the bytes and convert to binary using format and zero-padding to 8 digits (bin adds a 0b header so it's not suitable), and join the strings together:

    print("".join(["{:08b}".format(x) for x in decoded]))
    

    results in:

    00000000000000000000001101110001110000000111101000111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011110001011000100000010000000000000000000000000000000000000000000000001011000100000000000000000000000000011110000000000000000000001000000000000000000000001100000011001100000110011000000001000011000011001110100000110000000000000110000000001000100000000010001001001101001001001000000000001000001000001000000000000010000100100000000000000000000010001000000000010000110001001100110010000000110000100110001001101100110010110001100110111000011001111010001010001110011111100000000110011100100011111001100001111001000011010000111000110000111000101000000000000000001000000010000000000000101000000000000000000101000000000000000001000000010000000000000101000000000000000000000000000000000000000000000000000000000000000000
    

    (which is 920 chars, as expected)

提交回复
热议问题