【问题标题】:Convert two bytes into signed 16 bit integer in JavaScript在 JavaScript 中将两个字节转换为有符号的 16 位整数
【发布时间】:2016-07-11 02:41:23
【问题描述】:

在 JavaScript 中,我需要将两个字节转换为 16 位整数,以便将音频数据流转换为带符号的 PCM 值数组。

大多数将字节转换为 16 位整数的在线答案都使用以下方法,但它不适用于负数。

var result = (((byteA & 0xFF) << 8) | (byteB & 0xFF));

【问题讨论】:

    标签: javascript audio byte pcm


    【解决方案1】:

    您需要考虑到负数以 2 的补码表示,并且 JavaScript 使用 32 位整数来执行按位运算。因此,如果是负值,则需要将数字的前 16 位填入 1。所以,这里有一个解决方案:

    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
    }
    

    【讨论】:

    • 你能帮我只转换一个字节吗?
    猜你喜欢
    • 2013-08-15
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    相关资源
    最近更新 更多