2
在JavaScript中,我需要將兩個字節轉換爲16位整數,以便我可以將音頻數據流轉換爲帶符號PCM值的數組。在JavaScript中將兩個字節轉換爲帶符號的16位整數
大多數在線轉換字節爲16位整數的答案使用以下內容,但對於負數不能正確工作。
var result = (((byteA & 0xFF) << 8) | (byteB & 0xFF));
在JavaScript中,我需要將兩個字節轉換爲16位整數,以便我可以將音頻數據流轉換爲帶符號PCM值的數組。在JavaScript中將兩個字節轉換爲帶符號的16位整數
大多數在線轉換字節爲16位整數的答案使用以下內容,但對於負數不能正確工作。
var result = (((byteA & 0xFF) << 8) | (byteB & 0xFF));
您需要考慮否定符表示爲2的讚美,並且JavaScript使用32位整數執行按位運算。因此,如果它是負值,則需要用1填充數字的前16位。所以,這裏是一個解決方案:
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
}