JavaScript中将Uint8Array转换为Short int的结果为负数

时间:2018-11-15 21:45:14

标签: javascript arrays integer short arraybuffer

我正在尝试使用浏览器中的JavaScript从JPG获取exif数据。 我正在使用FileReader()类和readAsArrayBuffer()方法。 对于大多数操作,我需要Uint8Array,这就是将ArrayBuffer强制转换为的对象。 我在需要简短的时候向Uint8Array的对象添加了功能:

const getShort = function(position, bigEndian = true) {
  const int1 = this[position];
  const int2 = this[position+1];
  let result = (int1 << 8) | (int2 & 0xFF);
  if(!bigEndian) {
    let buffer = new ArrayBuffer(16);
    let view = new DataView(buffer);
    view.setInt16(1,result);

    result = view.getInt16(1, true) ;
  }
  return(result);
}

问题是解析0110 10011000 0111时得到1000 0111 0110 1001,它被解释为-30871而不是34665

0 个答案:

没有答案