Rog*_*ews 2 java java.util.scanner
在文件data.hex中,数据以十六进制形式给出,其中十六进制数的第一个数字始终小于8.
01FC 04BF 04C0 04C1 04C2 24C3 04C4 34C5 ...
Run Code Online (Sandbox Code Playgroud)
要解析此文件并将值存储在shrt []数组中,我已编写此代码
void read_hex_short(String filename, short[] shrt, int x, int y) throws Exception
{
String str;
Scanner s=new Scanner(new BufferedReader(new FileReader(filename)));
for(int i=0;i<height*width;i++)
{
str= s.next(); // i have tried str="0x"+s.next() but it didn't work
image[i]=(short)Integer.parseInt(str);
}
s.close();
}
Run Code Online (Sandbox Code Playgroud)
但我得到的是NumberFormatException,它在传递第一个字符串时出现,即仅01FC.我如何解析这些十六进制值并将它们存储在shrt []数组中?
你应该用Integer.parseInt(str, 16)它来告诉它使用hex.
您还应该知道,任何大于0x7FFF的值最终都会在数组中为负数:Java没有任何无符号数字类型(除非您计算char).
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |