這是做我的頭ArrayBuffer瘋狂 - 如何讓二進制到arraybuffer
我有一個jquery ajax的職位從一個MySQL數據庫返回的輸出。一個字段是二進制的。我希望使用Javascript來處理這個二進制字段。我一直在周圍嘗試不同的方法,而這些方法似乎並不令人滿意,而且大多數都是路障。
我可以將數據傳遞給base64編碼,然後在Javascript中解碼。
數據是一個數據包,所以我希望使用DataView對它進行解碼,因爲它具有將數據視爲數據包(如C結構)的所有Get ...調用。
我已經嘗試過Blob和Typed Arrays,但是我去過的地方似乎只是不正確的事情。
我什麼後是這樣的:
var ab = new ArrayBuffer (atob(my_base64_encoded_packet_data)
var dv = new DataView (ab);
簡單!不,我設法親近的唯一方法是使用的FileReader,像這樣(大約):
fileReader.onload = function () {
var newBuf = this.result;
callback(newBuf);
return;
};
fileReader.readAsArrayBuffer(buf);
凡BUF是BLOB和newBuf是ArrayBuffer。
這是另一種做我想做的,但似乎勞動密集型的方法。
function str2ab(str) {
var buf = new ArrayBuffer(str.length);
var bufView = new Uint8Array(buf);
for (var i=0, var strLen=str.length; i<strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
return buf;
}
請幫忙。謝謝
文件讀取器的方法應該是做工精細,有什麼問題呢? –