这是做我的头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;
}
请帮忙。谢谢
文件读取器的方法应该是做工精细,有什么问题呢? –