簡體   English   中英

然后在base64中解碼的編碼不輸出我的輸入數組緩沖區

[英]Encode then decoded in base64 doesn't output my input arraybuffer

鑒於我用於在base64中編碼和解碼的兩個函數。 如果我編碼然后解碼,我只是這樣做,然后我沒有在我的輸出和我的輸入之間獲得相同的值。

知道我做錯了什么嗎?

function _base64ToArrayBuffer(string_base64)    {
    var binary_string =  window.atob(string_base64);
    var len = binary_string.length;
    var bytes = new Uint8Array( len );
    for (var i = 0; i < len; i++)        {
        var ascii = string_base64.charCodeAt(i);
        bytes[i] = ascii;
    }
    return bytes.buffer;
}

function _arrayBufferToBase64( array_buffer )    {
    var binary = '';
    var bytes = new Uint8Array( array_buffer );
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++)        {
        binary += String.fromCharCode( bytes[ i ] )
    }
    return window.btoa( binary );
}



var input = my_ArrayBuffer;
var raw_data_base64 = _arrayBufferToBase64(input);
var ouput = _base64ToArrayBuffer(raw_data_base64);

你的第6行

var ascii = string_base64.charCodeAt(i);

應該

var ascii = binary_string.charCodeAt(i);

您的問題出在_base64ToArrayBuffer

for (var i = 0; i < len; i++) {
    var ascii = string_base64.charCodeAt(i); // THIS LINE
    bytes[i] = ascii;
}

如果你考慮一下你所獲得的ArrayBuffer實際意味着什么(就charcodes而言)它會讓你回到你的Base64字符串

看起來你真的想用

binary_string.charCodeAt(i);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM