Byte.parseByte throws NumberFormatException for value "95", radix: 16

David Holmes David.Holmes at oracle.com
Tue Jul 12 12:19:25 UTC 2011


Janda Martin said the following on 07/12/11 21:32:
> I have question about parsing hex string. Java 6u25
> 
> When I call Byte.parseByte("95", 16) I get.
> 
> java.lang.NumberFormatException: Value out of range. Value:"95" Radix:16
> 	at java.lang.Byte.parseByte(Byte.java:153)
> 
> 95 hex is 149 dec, Integer value '149' can be cast to valid byte value -107
> 
> Is the exception correct?

Yes. 95 hex == 149 dec which is > 127 and so is out of range for byte. 
If you want to use the bit pattern of 95 hex as a byte then you need to 
parse it as an int and do the cast yourself.

David Holmes

>   Thank you very much for answer
> 
>  Martin JANDA
>  jandam at crcdata.cz
> 
> 
> Code from Byte.java
> 
>     public static byte parseByte(String s, int radix)
> 	throws NumberFormatException {
> 	int i = Integer.parseInt(s, radix);
> 	if (i < MIN_VALUE || i > MAX_VALUE)
> 	    throw new NumberFormatException(
>                 "Value out of range. Value:\"" + s + "\" Radix:" + radix);
> 	return (byte)i;
>     }



More information about the core-libs-dev mailing list