如何使用java和reverese将音频文件(mp3文件)转换为二进制文件?
我想处理音频文件的二进制数据,并用处理的二进制数据生成一个新的音频文件。 我已使用以下代码将音频文件转换为二进制文件如何使用java和reverese将音频文件(mp3文件)转换为二进制文件?,java,audio,binary,stringbuilder,Java,Audio,Binary,Stringbuilder,我想处理音频文件的二进制数据,并用处理的二进制数据生成一个新的音频文件。 我已使用以下代码将音频文件转换为二进制文件 BufferedInputStream is = new BufferedInputStream(new FileInputStream("song.mp3")); for (int i; (i = is.read()) != -1;) { String temp = "0000000" + Inte
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);
}
}
}
以下示例将一些数字(可能是音频文件的内容)前后转换为二进制数:
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);
}
}
}
我的实际需求是开发音频隐写术。我认为字符串将更容易处理和应用LSB算法。我的实际需求是开发音频隐写术。我认为字符串将更容易处理和应用LSB算法。您正在使用
公共静态int-parseInt(java.lang.String,int)
方法将二进制数转换为整数。如何对我的音频文件执行相同的操作?您的问题不清楚。你的问题是什么,你不知道如何读取二进制(音频)文件吗?我使用我提供的上述程序将音频文件(mp3)转换成二进制。但我怎样才能扭转这种逻辑呢?对于二进制值,我应该如何恢复我的音频(mp3)文件?我上面的示例会将其转换为二进制字符串,然后恢复为原始值。您只需要将“x”的值写入文件,而不是打印到屏幕上。在您的情况下,“x”是一个基本整数。但在我看来,“x”不是一个原语,而是一个音频文件,你正在使用publicstaticintparseint(java.lang.String,int)
方法将二进制数转换成整数。如何对我的音频文件执行相同的操作?您的问题不清楚。你的问题是什么,你不知道如何读取二进制(音频)文件吗?我使用我提供的上述程序将音频文件(mp3)转换成二进制。但我怎样才能扭转这种逻辑呢?对于二进制值,我应该如何恢复我的音频(mp3)文件?我上面的示例会将其转换为二进制字符串,然后恢复为原始值。您只需要将“x”的值写入文件,而不是打印到屏幕上。在您的情况下,“x”是一个基本整数。但在我看来,“x”不是一个原语,而是一个音频文件