Java 将MP3转换为二进制文件

Java 将MP3转换为二进制文件,java,binary,mp3,Java,Binary,Mp3,我只是想知道…是否可以使用Java将.mp3文件转换为直接二进制的文本文件(仅1和0)?我想这会涉及到使用AudioInputStream,然后使用某种方法来解码单个字节,但是有人能告诉我从哪里开始吗 谢谢 你应该忽略这是一个MP3文件。把它当作二进制文件。逐字节读取文件,并将每个字节转换为其“二进制”表示形式。您应该忽略它是一个MP3文件。把它当作二进制文件。逐字节读取文件,并将每个字节转换为其“二进制”表示形式。当然可以,但不需要使用特殊的音频流。您要查找的是将任何类型的文件转换为包含1和0

我只是想知道…是否可以使用Java将.mp3文件转换为直接二进制的文本文件(仅1和0)?我想这会涉及到使用
AudioInputStream
,然后使用某种方法来解码单个字节,但是有人能告诉我从哪里开始吗


谢谢

你应该忽略这是一个MP3文件。把它当作二进制文件。逐字节读取文件,并将每个字节转换为其“二进制”表示形式。

您应该忽略它是一个MP3文件。把它当作二进制文件。逐字节读取文件,并将每个字节转换为其“二进制”表示形式。

当然可以,但不需要使用特殊的音频流。您要查找的是将任何类型的文件转换为包含1和0个字符的文件。我还没有测试过这段代码,但是算法应该是清晰的

FileInputStream fin = new FileInputStream(new File(path));
BufferedWriter bw = new BufferedWriter(new FileWriter(otherpath));
byte contents[] = new byte[100];
while (fin.read(contents)!= -1)
{
  for (byte b : contents)
    for (int x = 0; x < 8; x++)
      bw.write(b>>x & 1);
}
FileInputStream fin=newfileinputstream(新文件(路径));
BufferedWriter bw=新的BufferedWriter(新文件写入程序(其他路径));
字节内容[]=新字节[100];
while(fin.read(contents)!=-1)
{
for(字节b:内容)
对于(int x=0;x<8;x++)
写(b>>x&1);
}

编辑:如果您只想查看它的外观,可以使用十六进制编辑器打开任何类型的文件。

这当然是可能的,但您不需要使用特殊的音频流。您要查找的是将任何类型的文件转换为包含1和0个字符的文件。我还没有测试过这段代码,但是算法应该是清晰的

FileInputStream fin = new FileInputStream(new File(path));
BufferedWriter bw = new BufferedWriter(new FileWriter(otherpath));
byte contents[] = new byte[100];
while (fin.read(contents)!= -1)
{
  for (byte b : contents)
    for (int x = 0; x < 8; x++)
      bw.write(b>>x & 1);
}
FileInputStream fin=newfileinputstream(新文件(路径));
BufferedWriter bw=新的BufferedWriter(新文件写入程序(其他路径));
字节内容[]=新字节[100];
while(fin.read(contents)!=-1)
{
for(字节b:内容)
对于(int x=0;x<8;x++)
写(b>>x&1);
}

编辑:如果您只想查看它的外观,可以使用十六进制编辑器打开任何类型的文件。

打开命令提示符并键入xxd-b文件名。mp3

打开命令提示符并键入xxd-b文件名。mp3

文件是二进制文件。您是否要求将原始位转换为ASCII
1
0
字节?这太疯狂了。每个输出文件都将是巨大的@JustinSatyr只有~8倍大..@SLaks是的,有没有办法将它们转换回原来的.mp3?啊,我的代码解决方案没有用。获得一个像HxD这样的十六进制编辑器,它可以为您实现这一点。文件是二进制的。您是否要求将原始位转换为ASCII
1
0
字节?这太疯狂了。每个输出文件都将是巨大的@JustinSatyr只有~8倍大..@SLaks是的,有没有办法将它们转换回原来的.mp3?啊,我的代码解决方案没有用。得到一个像HxD这样的十六进制编辑器,它可以为你做到这一点。如果我以相反的方式执行此算法(读取单个1和0,然后将其保存为我想要的任何类型的文件),它也会工作吗?如果你尝试一个简单的实现,不会。请注意,它将字节分成8段,以打印1和0。在将字节写回文件之前,它们需要重新组合。类似“读取8个字符->转换为1个字节->写入文件”这样的操作就可以了。如果这是您想要执行的任务,请使用现有的解决方案,就像我反向执行此算法一样(读取单个1和0,然后将其保存为我想要的任何类型的文件),它也会工作吗?如果您尝试一个简单的实现,则不会。请注意,它将字节拆分为8个部分,以打印1和0。在将字节写回文件之前,它们需要重新组合。类似“读取8个字符->转换为1个字节->写入文件”这样的操作就可以了。如果这是您想要完成的任务,请使用现有的解决方案,如