2016-06-03 15 views
0

Ich versuche, einen Datendatei-Header zu analysieren, der ungefähr so ​​aussieht: 7B 01 2C 00 00 EA 60 2C 03 2C 56 wobei alle Werte in Hex angegeben sind. Ich bin derzeit einen Scanner Scan, und wie etwas zu tun:Wie kann ich eine Reihe von Bytes in Java einlesen und speichern?

if(scan.getNextByte()==0x7B) {do work} 

Dies ist das Auslösen einer inputMismatchException

Exception in thread "AWT-EventQueue-0" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Unknown Source) 
    at java.util.Scanner.next(Unknown Source) 
    at java.util.Scanner.nextByte(Unknown Source) 
    at java.util.Scanner.nextByte(Unknown Source) 

ich meine Frage denken ist, was ich hier falsch mache, aber ich bin auch neugierig Wenn es einen besseren Weg gibt, dies zu tun, was mache ich gerade. Ich muss basierend auf jedem einzelnen Byte analysieren, weshalb ich nicht immer eine ganze Zeile einlese.

Antwort

0

nextByte() erwartet ein Byte (-128 bis 127) im Dezimalformat.

Ich empfehle, ein Wort zu lesen und es als hex z.

int num = Integer.parseInt(scanner.next(), 16); 

oder Sie können

int num = scanner.nextInt(16); 

Diese verwenden ist kein Byte mit Vorzeichen, wie ich nehme an, Sie erwarten FF == 255 nicht -1.