如何在Javascript中将两个8位转换为16位,反之亦然?

时间:2015-04-18 04:38:20

标签: javascript 16-bit 8-bit

我知道以前曾经问过这个问题,但我无法达成解决方案。如果主题重复,我道歉,但我认为不是。

我有一个从Uint16Array中提取的数字转换为一对8位数字并且做得很好,但是当我想从这两个8位数字转换为第一个数字时,我可以&#t; t得到它。



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
&#13;
&#13;
&#13;

你会非常友好地帮助我。谢谢。

1 个答案:

答案 0 :(得分:5)

您交换了字节:

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