2012-02-17 697 views
0

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

谢谢!

+9

文件_are二进制。你是否要求将原始位转换为ASCII'1'和'0'字节? – SLaks 2012-02-17 22:12:50

+0

这将是疯了。每个输出文件将是巨大的! – 2012-02-17 22:13:16

+0

@JustinSatyr只有~8倍大.. – paislee 2012-02-17 22:15:19

回答

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); 
} 

编辑:如果你只是想看看是什么样子,你可以打开任何类型的文件用十六进制编辑器。

+0

如果我反向执行这个算法,(读取个别的1和0,然后将它保存为我想要的任何类型的文件)它也可以工作吗? – roboguy12 2012-02-17 22:36:59

+0

如果你尝试一个天真的实现,没有。请注意,它将字节分成8个部分以打印1和0。在将该字节写回文件之前,它们需要重新组合。像'读8个字符 - >转换为1个字节 - >写入文件'会做的。如果这是您想要执行的任务,请使用现有的解决方案,如[HxD](http://mh-nexus.de/en/hxd/) – Thomas 2012-02-17 22:40:38

3

你应该忽略它的MP3文件。只要把它当作二进制。逐字节读取文件并将每个字节转换为其“二进制”表示。

1

打开命令提示符并键入xxd -b filename.mp3