Javascript 使用uint8和uint16阵列读取图像作为阵列缓冲
下面是一段代码,通过检查所需的幻数来检查上传的图像mime类型(我仍然不清楚它们)。当我将blob文件提供给uint8Array时,它工作,数组填充。但是如果我使用uint16数组,它会给出一个错误。这个错误的原因可能是什么。它说的是无效的论点 关于这个话题,我有两个问题 1。为什么不能使用UINT16阵列代替UINT8阵列? 2。我读维基百科。但是它包含了很多技术性的东西。你能解释一下“神奇数字”吗?这样我就能明白它到底是什么(简而言之)Javascript 使用uint8和uint16阵列读取图像作为阵列缓冲,javascript,filereader,fileapi,unsigned-integer,Javascript,Filereader,Fileapi,Unsigned Integer,下面是一段代码,通过检查所需的幻数来检查上传的图像mime类型(我仍然不清楚它们)。当我将blob文件提供给uint8Array时,它工作,数组填充。但是如果我使用uint16数组,它会给出一个错误。这个错误的原因可能是什么。它说的是无效的论点 关于这个话题,我有两个问题 1。为什么不能使用UINT16阵列代替UINT8阵列? 2。我读维基百科。但是它包含了很多技术性的东西。你能解释一下“神奇数字”吗?这样我就能明白它到底是什么(简而言之) 此处不能使用UINT16数组,因为该文件的字节数为奇
谢谢你的回复。我没有发现任何声称uint16需要奇数字节的东西。你能提供我可以读取它的源代码吗myself@AL-不,它不需要奇数字节,恰恰相反。它如何处理奇数个字节?最后一个怎么办?我不确定它在任何地方都有明确的文档记录,但是您可以进行测试:
console.log(新的Uint16Array(新的ArrayBuffer(16))代码>(工作)console.log(新的Uint16Array(新的ArrayBuffer(17))代码>(不)谢谢您的回复。我没有发现任何声称uint16需要奇数字节的东西。你能提供我可以读取它的源代码吗myself@AL-不,它不需要奇数字节,恰恰相反。它如何处理奇数个字节?最后一个怎么办?我不确定它在任何地方都有明确的文档记录,但是您可以进行测试:console.log(新的Uint16Array(新的ArrayBuffer(16))代码>(工作)console.log(新的Uint16Array(新的ArrayBuffer(17))代码>(没有)
var upload=document.getElementById('upload');
upload.addEventListener('change',function(e){
if(window.File && window.FileReader && window.FileList){
var file=e.target.files[0];
console.log(file.type);
var fileReader=new FileReader();
fileReader.onload= function(e){
var arr = (new Uint8Array(e.target.result));
console.log(arr);
var arr2=(new Uint16Array(e.target.result));
console.log(arr2);
};
fileReader.readAsArrayBuffer(file);
}else{
alert('file api not compatible with your browser');
}
});