Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich bin eigentlich ein C/C++ Programmierer, muss aber mein erstes Projekt in Java für das Android Tab schreiben. :autsch: Wie definiere ich einen Datentyp mit einer Länge von einem Byte und Wertebereich 0 bis 255?
In C/C++ ist es: unsigned char
Aber in Java läuft der Wertebereich von -128 bis +127.
Java hat keinen Datentyp wie den stink normalen (in jeder Sprache vorhandenen) Byte? Wie gleiche ich dann z. B. nen Array byteweise mit dem erw. ASCII Zeichensatz ab oder lese nur einen Byte aus einer Datei? Ich möchte auch nicht unbedingt doppelten Speicher nutzen als nötig.
Es ist in Java egal ob du byte, short oder int nutzt. Innerhalb der VM wird aus Geschwindigkeitsgründen immer mit int gearbeitet. Du brauchst also keinen zusätzlichen Speicher.
Für Chars gibt es extra einen char Datentyp da Java intern mit UTF-8 arbeitet.
Auch InputStreams und Reader geben dir einen int statt eines byte zurück, aus oben genannten Gründen.
Wenn ich beispielsweise die ersten drei magic bytes einer Datei prüfen möchte, müsste ich im folgenden Code ein Integer-Array nutzen und mit 0x000000EF usw. abgleichen?
Java:
byte[] bFileHeader = new byte[3];
BufferedInputStream f = new BufferedInputStream(new FileInputStream(sFilename));
f.read(bFileHeader);
if (bFileHeader[0] == 0xEF && bFileHeader[1] == 0xBB && bFileHeader[2] == 0xBF) {
// hmm?
}
[...]
Nee so geht es, dann musst du aber 0xEF (usw) explizit nach byte casten, damit Java im Hintergrund den richtigen Bytewert dafür ermittelt (meine ich zu mindestens).
Versuche also mal:
Java:
byte[] bFileHeader = new byte[3];
BufferedInputStream f = new BufferedInputStream(new FileInputStream(sFilename));
f.read(bFileHeader);
if (bFileHeader[0] == (byte) 0xEF && bFileHeader[1] == (byte) 0xBB && bFileHeader[2] == (byte) 0xBF) {
// hmm?
}
[...]
Ok, das muss ich mir später zu Hause nochmal genauer anschauen. Nach 9 Stunden Arbeit kann ich sowieso nicht mehr klar denken. Auf jedenfall danke für die schnelle und nette Hilfe!