Latest posts on работа с gp3 файлами topichttps://python.su/forum/topic/955/2007-07-01T17:42:12+03:00Разное :: Флейм :: работа с gp3 файлами
2007-07-01T17:42:12+03:00tabajara6315piece.setTitle(s); piece.setSubtitle(s);piece.setAlbum(s);<br/>додають до зчитаної стрічки якісь свої дані і записують ту стрічку в файл
Разное :: Флейм :: работа с gp3 файлами
2007-07-01T17:28:15+03:00tabajara6314<div class="code"><pre><span class="n">lengthPlusOne</span> <span class="o">=</span> <span class="n">readInt</span><span class="o">();</span> <span class="c1">// зчитує 4 байти</span>
<span class="k">if</span> <span class="o">(</span><span class="n">lengthPlusOne</span> <span class="o">></span> <span class="mi">0</span><span class="o">)</span> <span class="c1">// дивиться чи не дорівнює lengthPlusOne нулю</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">read</span><span class="o">();</span> <span class="c1">// зчитує якусь кількість байт r - число</span>
<span class="k">if</span> <span class="o">(</span><span class="n">length</span> <span class="o">!=</span> <span class="n">r</span><span class="o">)</span> <span class="o">{</span> <span class="c1">// якщо кількість байт в файлі не дорівнює lengthPlusOne - 1 то файл поганий</span>
<span class="n">Error</span><span class="o">(</span><span class="s">"Wrong string length: should have been "</span>
<span class="o">+</span> <span class="n">length</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span> <span class="c1">// якщо lengthPlusOne == 0 - функція повертає пусту стрічку</span>
<span class="n">r</span> <span class="o">=</span> <span class="n">read</span><span class="o">();</span>
<span class="n">str</span> <span class="o">=</span> <span class="s">""</span><span class="o">;</span>
<span class="o">}</span>
<span class="k">return</span> <span class="n">str</span>
</pre></div>Ця функція наскільки я розумію дивиться чи файл не є пошкодженим - перевіряє довжину файлу записану в загаловку з реальною довжиною і повертає весь файл як стрічку. На пітоні переписати не вийде - треба знати що роблять ф-ції readInt() і read(). Мені здається що файл парситься якраз в ф-ції read().
Разное :: Флейм :: работа с gp3 файлами
2007-07-01T17:02:20+03:00niro6313Пытаюсь реализовать хотя бы чтение заголовков gp3 (guitar pro) файлов. Но нифига не получается. Формат нигде не описан, но есть окрытые варианты на java. Вот функция, которая по моему мнению добывает из бинарного файла последовательно информацию.<br/><div class="code"><pre> protected String readStringIntegerPlusOne() throws IOException {<br/> byte[] b;<br/> String str;<br/> int lengthPlusOne;<br/> int length;<br/> int r;<br/> lengthPlusOne = readInt(); // reads the expected length + 1<br/> length = lengthPlusOne - 1; // computes the real length<br/> if (lengthPlusOne > 0) {<br/> // reads the real length (as a byte)<br/> r = read();<br/> if (length != r) {<br/> throw new IOException("Wrong string length: should have been "<br/> + length);<br/> }<br/> b = new byte[length];<br/> read(b);<br/> str = new String(b);<br/> } else {<br/> r = read();<br/> str = "";<br/> }<br/> return str;<br/> }</pre></div>К ней обращаются так <br/><div class="code"><pre> // Title<br/> s = readStringIntegerPlusOne();<br/> piece.setTitle(s);<br/><br/> // Subtitle<br/> s = readStringIntegerPlusOne();<br/> piece.setSubtitle(s);<br/><br/> // Interpret<br/> s = readStringIntegerPlusOne();<br/> piece.setInterpret(s);<br/><br/> // Album<br/> s = readStringIntegerPlusOne();<br/> piece.setAlbum(s);<br/><br/> // Author of the song<br/> s = readStringIntegerPlusOne();<br/> piece.setAuthorSong(s);<br/>...</pre></div>Как будет выглядеть функция на питоне ? Спасибо.