java - 如何将字节数组转换为整数?

标签 java javasound pcm wave

我有一个包含纯声音数据的字节数组。我想将其转换为整数。每个样本的位数是16。帧速率是44100。但是如何将其转换为整数?

最佳答案

澄清一下:您有一个 byte[] ,其中包含成对的 byte 来形成一个整数?像这样:{int1B1, int1B2, int2B1, int2B2, int3B1, int3B2, ...}

如果是这样,您可以将它们组装为整数,如下所示:

int[] audio = new int[byteArray.length/2];
for (int i = 0; i < byteArray.length/2; i++) { // read in the samples
  int lsb = byteArray[i * 2 + 0] & 0xFF; // "least significant byte"
  int msb = byteArray[i * 2 + 1] & 0xFF; // "most significant byte"
  audio[i] = (msb << 8) + lsb;
}

当然,您可以将该循环优化为单行循环,但我更喜欢这种方式,以获得更好的可读性。另外,根据数据的字节顺序,您可以切换 ub1 和 ub2。

关于java - 如何将字节数组转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12139755/

相关文章:

java - 使用 Java 的进程生成器生成多个进程

java - 为什么尝试获取 Clip 会抛出异常?

java - 从 Java Swing App 中的 URL 流式传输音频

java - 从波形文件中删除正弦波声音

algorithm - 给定每秒 44 个样本的 LPCM 阵列消除噪声

ffmpeg - 带 PCM 音频的 MPEG-2 节目流

C++:将 float[] 转换为 unsigned char* 或 BYTE*

java - 如何在另一个java程序-netbeans中编译&运行java程序

java - 如何在 Mac OS X 上检查启动时按下 Java/SWT 的 COMMAND 键

java - 在 JDBC 中连接到 Oracle 数据库时出错