gpt4 book ai didi

java - 如何将声音文件中的(短)样本转换为字节数组

转载 作者:搜寻专家 更新时间:2023-11-01 04:03:54 28 4
gpt4 key购买 nike

在将 short 转换为字节数组时,我在网上找到了以下解决方案,但不太理解所涉及的逻辑。

//buffer is an array of bytes, bytes[]
buffer[position] = (byte)(sample & 0xff);
buffer[position+1] = (byte)((sample >> 8) & 0xff);

有人能告诉我为什么 0xff (256) 被添加到短路样本中吗?

最佳答案

这段代码可能来自 C 代码(或者是由 C 程序员编写的,他不像 erickson 那样解析 Java)。这是因为在 Java 中,从具有更多信息的类型转换为具有更少信息的类型将丢弃高阶位,因此 & 0xff 在这两种情况下都是不必要的。

一个 short 有 16 位,两个字节。所以它需要在字节数组中占用两个位置,因为如果我们只是将一个 short 转换为一个字节,一个字节就会丢失。

所以,你的代码确实

1110001100001111 sample
0000000011111111 0xff
0000000000001111 sample & 0xff => first byte`

然后,置换样本得到第二个字节

0000000011100011 sample >> 8
0000000011111111 0xff
0000000011100011 (sample >> 8 ) & 0xff => second byte

埃里克森在下面展示的内容可以写得更好(希望它很快就会出现在上面)。

关于java - 如何将声音文件中的(短)样本转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/273029/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com