如何在 Javascript 中将两个 8 位转换为 16 位,反之亦然?
How to convert two 8-bits to 16-bits and vice versa in Javascript?
我知道之前有人问过这个问题,但我一直无法找到解决方案。如果主题重复,我深表歉意,但我认为不是。
我有一个从 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
你会很乐意帮助我。谢谢。
您交换了字节:
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
我知道之前有人问过这个问题,但我一直无法找到解决方案。如果主题重复,我深表歉意,但我认为不是。
我有一个从 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
你会很乐意帮助我。谢谢。
您交换了字节:
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