javaprogger1987
Erfahrenes Mitglied
Hallo!
Ich hab folgendes Problem ich bin mir nicht sicher ob ich Integer korrekt aus einer Datei auslese..
Mein Ziel ist es, die Winamp Media Library Dateien zu lesen, allerdings scheitert es irgendwie an meinem Verständnis.. Naja erstmal hier die Spezefikation der Library:
http://www.bluemars.org/sdk/extra/nde_specs_v1.txt
Nun dachte ich, dass ich bei der Indexdatei folgendermaßen vorgehen muss (Punkt 2 in der Doku):
1. 8 Byte String lesen ("NDEINDEX") -> klappt
2. 4 Byte Integer lesen
3. So oft 4 Byte Integer lesen wie der voherige Integer groß ist (Array)
Nun fang ich aber schon an Punkt 2 an zu zweifeln ob ich das so richtig mache, denn irgendwie ist die Zahl zwar ganz ok (8922, meine ML hat 8920 Einträge) aber irgendwie passt das vorne und hinten nicht bei Punkt 3..
Meine Integer-Lese-Funktion ^^:
Die ersten Integers des Arrays von 3. sehen so aus
Ab 8921 scheint mir das auch ganz sinnvoll zu sein (Eintragnr + Offset in der Data-Datei) aber so steht das ja nicht in der Spezefikation und ich kann mir die Zahlen davor auch nicht erklären .. Vllt. könntet Ihr euch das mal angucken
Gruß
Tobias
Ich hab folgendes Problem ich bin mir nicht sicher ob ich Integer korrekt aus einer Datei auslese..
Mein Ziel ist es, die Winamp Media Library Dateien zu lesen, allerdings scheitert es irgendwie an meinem Verständnis.. Naja erstmal hier die Spezefikation der Library:
http://www.bluemars.org/sdk/extra/nde_specs_v1.txt
Nun dachte ich, dass ich bei der Indexdatei folgendermaßen vorgehen muss (Punkt 2 in der Doku):
1. 8 Byte String lesen ("NDEINDEX") -> klappt
2. 4 Byte Integer lesen
3. So oft 4 Byte Integer lesen wie der voherige Integer groß ist (Array)
Nun fang ich aber schon an Punkt 2 an zu zweifeln ob ich das so richtig mache, denn irgendwie ist die Zahl zwar ganz ok (8922, meine ML hat 8920 Einträge) aber irgendwie passt das vorne und hinten nicht bei Punkt 3..
Meine Integer-Lese-Funktion ^^:
Java:
private int readInt( RandomAccessFile raf ) throws IOException
{
int ret = 0;
int[] bytes = new int[4]; //4 Byte Integer lesen
for ( int i = 0; i < 4; i++ )
{
bytes[i] = raf.readUnsignedByte();
}
//Da LittleEndian -> richtige Reihenfolge einhalten
for ( int i = 3; i >= 0; i-- )
{
ret = ret << 8;
ret = ret | bytes[i];
}
return ret;
}
Die ersten Integers des Arrays von 3. sehen so aus
Code:
255
8
0
429
1
487
8921
898
8920
1305
8919
1710
8918
2105
8917
Ab 8921 scheint mir das auch ganz sinnvoll zu sein (Eintragnr + Offset in der Data-Datei) aber so steht das ja nicht in der Spezefikation und ich kann mir die Zahlen davor auch nicht erklären .. Vllt. könntet Ihr euch das mal angucken
Gruß
Tobias
Zuletzt bearbeitet: