4

我知道以前有人问过这个问题,但我无法找到解决方案。如果主题重复,我深表歉意,但我认为不是。

我从 Uint16Array 中提取了一个数字以转换为一对 8 位数字并且做得很好,但是当我想从这两个 8 位数字转换为第一个数字时,我无法得到它。

var firstNumber = 1118; // extracted from Uint16Array

var number8Bit1 = firstNumber & 0xff;
var number8Bit2 = ((firstNumber >> 8) & 0xff);

console.log(number8Bit1, number8Bit2); // 94, 4

var _firstNumber = (((number8Bit1 & 0xff) << 8) | (number8Bit2 & 0xff));

console.log(_firstNumber); // 24068 <-- 1118

你会很乐意帮助我的。谢谢你。

4

1 回答 1

6

你交换了字节:

var _firstNumber = (((number8Bit2 & 0xff) << 8) | (number8Bit1 & 0xff));

合并时,您必须执行提取的相反操作。

var firstNumber = 1118; // extracted from Uint16Array

var high = ((firstNumber >> 8) & 0xff);
var low = firstNumber & 0xff;

console.log(high, low); // 4, 94

var _firstNumber = (((high & 0xff) << 8) | (low & 0xff));

console.log(_firstNumber); // 1118
于 2015-04-18T04:48:41.007 回答