我想要处理音频文件的二进制数据,并使用处理后的二进制数据生成一个新的音频文件。 我已使用以下代码将音频文件转换为二进制文件
BufferedInputStream is = new BufferedInputStream(new FileInputStream("song.mp3"));
for (int i; (i = is.read()) != -1;) {
String temp = "0000000" + Integer.toBinaryString(i).toUpperCase();
if (temp.length() == 1) {
sb.append('0');
}
temp = temp.substring(temp.length() - 8);
sb.append(temp);
}
我不知道如何使用存储在 sb(StringBuilder) 对象中的上述二进制数据创建音频文件。
最佳答案
以下示例将一些数字(可能是音频文件的内容)来回转换为二进制数:
public class Main
{
private static String toBin(int i)
{
String temp = "00000000" + Integer.toBinaryString(i);
return temp.substring((temp.length() - 8)).toUpperCase();
}
public static void main(String[] args)
{
int[] inputData = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
StringBuffer sb = new StringBuffer();
// Fill the buffer with binary numbers
for (int x : inputData)
{
String binaryNumber = toBin(x);
System.out.println("x="+x+", binaryNumber=" + binaryNumber);
sb.append(binaryNumber);
}
// Print the whole buffer content
System.out.println("sb=" + sb.toString());
// Split the buffer into chunks of 8 characters
for (int i = 0; i < sb.length(); i += 8)
{
String part = sb.substring(i, i + 8);
// Convert back to integer
int x = Integer.parseInt(part, 2);
System.out.println("part=" + part + ", x=" + x);
}
}
}
输出:
x=1, binaryNumber=00000001
x=2, binaryNumber=00000010
x=3, binaryNumber=00000011
x=4, binaryNumber=00000100
x=5, binaryNumber=00000101
x=6, binaryNumber=00000110
x=7, binaryNumber=00000111
x=8, binaryNumber=00001000
x=9, binaryNumber=00001001
x=10, binaryNumber=00001010
sb=00000001000000100000001100000100000001010000011000000111000010000000100100001010
part=00000001, x=1
part=00000010, x=2
part=00000011, x=3
part=00000100, x=4
part=00000101, x=5
part=00000110, x=6
part=00000111, x=7
part=00001000, x=8
part=00001001, x=9
part=00001010, x=10
关于java - 如何使用java将音频文件(mp3文件)转换为二进制文件以及相反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60325730/