16 bit - Hur man konverterar två 8-bitars till 16-bitars och vice versa i Javascript?
Jag vet att detta har frågats tidigare, men jag har inte lyckats hitta en lösning. Jag ber om ursäkt om ämnet är duplicerat, men jag tror att det inte är det.
Jag har ett nummer som extraherats från en Uint16Array för att konvertera till ett par 8-bitarsnummer och det fungerar bra, men när jag vill konvertera från dessa två 8-bitarsnummer till det första numret kan jag inte få det.
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 <-- 1118Du skulle vara så vänlig att hjälpa mig, tack.
Svar #1
Du bytte ut bytena:
var _firstNumber = (((number8Bit2 & 0xff) << 8) | (number8Bit1 & 0xff));
Du måste göra motsatsen till extraktionen när du kombinerar.
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
