2012-02-17 5 views
0

Мне просто интересно ... возможно ли использовать Java для преобразования .mp3-файла в текстовый файл с прямым двоичным кодом (всего 1 и 0)? Я полагаю, что это будет связано с использованием AudioInputStream, а затем некоторым методом для декодирования отдельных байтов, но может ли кто-нибудь дать мне представление о том, с чего начать?Преобразование MP3 в двоичный

Спасибо!

+9

Файлы _are_ binary. Вы просите преобразовать необработанные биты в ASCII '1' и' 0' байт? – SLaks

+0

Это было бы безумным. Каждый выходной файл будет огромным! –

+0

@JustinSatyr Only ~ 8x as large .. – paislee

ответ

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

Edit: Если вы просто хотели, чтобы увидеть, как это выглядит, вы можете открыть любой файл с шестнадцатеричным редактором.

+0

Если я делаю этот алгоритм в обратном порядке (чтение в отдельных 1 и 0, а затем сохранение его как любого типа файла, который я хочу), он тоже будет работать? – roboguy12

+0

Если вы попробуете наивную реализацию, нет. Обратите внимание, что он разбивает байт на 8 частей для печати 1 и 0. Они должны быть рекомбинированы до того, как этот байт будет записан обратно в файл. Что-то вроде «читать 8 символов -> конвертировать в 1 байт -> писать в файл». Если это задача, которую вы хотите сделать, используйте существующее решение, например [HxD] (http://mh-nexus.de/en/hxd/) – Thomas

3

Вы должны игнорировать этот файл MP3. Просто рассматривайте его как двоичный. Прочитайте байтовый файл байтом и преобразуйте каждый байт в его «двоичное» представление.

1

Откройте командную строку и введите xxd -b filename.mp3

Смежные вопросы