我正在尝试解析一个看起来像这样的数据文件头: 7B 01 2C 00 00 EA 60 2C 03 2C 56 其中所有值均为十六进制。 我目前正在使用扫描仪扫描,并执行以下操作:
if(scan.getNextByte()==0x7B) {do work}
抛出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)
我认为我的问题是我在这里做错了什么,但我也很好奇,如果有更好的方法来做到这一点,那么我目前在做什么。我需要根据每个字节进行解析,这就是为什么我不能一次读取整行。
答案 0 :(得分:0)
nextByte()需要一个十进制的字节(-128到127)。
我建议读一个单词并将其解析为十六进制。
int num = Integer.parseInt(scanner.next(), 16);
或者您可以使用
int num = scanner.nextInt(16);
这不是一个带符号的字节,因为我假设你期望FF == 255而不是-1。