Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exception while Parsing Hexadecimal to Short in Java

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?

like image 893
Rog Matthews Avatar asked Dec 12 '25 01:12

Rog Matthews


2 Answers

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).

like image 145
Jon Skeet Avatar answered Dec 14 '25 14:12

Jon Skeet


You can use Short.parseShort(str, 16) to parse HEX. This will avoid the need to cast it to short from an int.

like image 27
Sergey Kalinichenko Avatar answered Dec 14 '25 14:12

Sergey Kalinichenko



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!