Skip to content Skip to sidebar Skip to footer

Convert Two Bytes Into Signed 16 Bit Integer In JavaScript

In JavaScript, I need to convert two bytes into a 16 bit integer, so that I can convert a stream of audio data into an array of signed PCM values. Most answers online for convertin

Solution 1:

You need to consider that the negatives are represented in 2's compliment, and that JavaScript uses 32 bit integers to perform bitwise operations. Because of this, if it's a negative value, you need to fill in the first 16 bits of the number with 1's. So, here is a solution:

var sign = byteA & (1 << 7);
var x = (((byteA & 0xFF) << 8) | (byteB & 0xFF));
if (sign) {
   result = 0xFFFF0000 | x;  // fill in most significant bits with 1's
}

Post a Comment for "Convert Two Bytes Into Signed 16 Bit Integer In JavaScript"