PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Datei mit unsigned byte lesen


DocEW
2008-08-13, 10:39:44
Hallo,

ich habe folgendes Problem: Eine Datei mit unsigned bytes lesen!
Es gibt zwar den DataInputStream mit der Methode readUnsignedByte(), aber das ist langsam, wenn die Datei ein paar MB groß ist. Und read(byte[] b) ist zwar schnell, kommt aber halt nicht mit unsigned klar (Werte über 128 werden negativ), so dass ich danach alles nochmal in ein int-Array umkopieren müsste.

Gibt es vielleicht noch eine elegantere Lösung? Kann ja nicht so schwer sein...

Danke!

DocEW

Shink
2008-08-13, 10:55:13
Öhm... was willst du denn machen mit den Daten?

read(byte[] b) liest ja erfolgreich unsigned bytes, nur ist byte eben in Java nicht unsigned. Wenn du einen int-Wert mit dem unsigned Wert haben willst reich:


public static int unsignedByteToInt(byte b) {
return (int) b & 0xFF;
}


Und: Bezüglich Performance würde ich mal einen BufferedInputStream verwenden.

Grestorn
2008-08-13, 11:05:53
byte ist in Java nun mal vorzeichenbehaftet. Deswegen liefert readUnsignedByte auch ein Integer (damit Werte größer 127 abgebildert werden können).

Wenn Du ein Array von Bytes haben willst, bleibt Dir nichts, als mit dem Vorzeichen umgehen zu können.

DocEW
2008-08-13, 16:31:05
Danke für eure Hilfe.
Ich lese jetzt einfach ein byte-Array ein (geht in wenigen ms) und konvertiere dann mit einer Schleife in ein int-Array (geht auch sehr fix). Ist zwar irgendwie nervig, aber geht wohl nicht anders.