2012-02-17 60 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