In file data.hex, the data is given in hexadecimal form where the first digit of hexadecimal number is always less than 8. Eg.
01FC 04BF 04C0 04C1 04C2 24C3 04C4 34C5 ...
To parse this file and store the values in shrt[] array i have written this code
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();
}
But i am getting NumberFormatException which arises while passing the first string i.e. 01FC only. How can i parse these hexadecimal values and store them in the shrt[] array?
You should be using Integer.parseInt(str, 16) to tell it to use hex.
You should also be aware that any values greater than 0x7FFF will end up being negative in your array: Java doesn't have any unsigned numeric types (unless you count char).
You can use Short.parseShort(str, 16) to parse HEX. This will avoid the need to cast it to short from an int.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With