{{announcement.body}}
{{announcement.title}}

Java low level: Converting between integers and text (part 2)

DZone 's Guide to

Java low level: Converting between integers and text (part 2)

· Java Zone ·
Free Resource

Parsing an integer is relatively simple depending on how many checks you make. This loop does almost no validation. The input can multiple '-' signs and the number can overflow. As soon as it reaches a character is does not accept to stops. It is left to the caller to check if this character was a valid separartor.

ByteBufferTextLongReader.read()
long num = 0;
boolean negative = false;
while (true) {
    byte b = buffer.get();
//  if (b >= '0' && b <= '9')
    if ((b - ('0' + Integer.MIN_VALUE)) <= 9 + Integer.MIN_VALUE)
        num = num * 10 + b - '0';
    else if (b == '-')
        negative = true;
    else
        break;
}
return negative ? -num : num;
Note: The expression (b >= '0' && b <= '9') has been re-written taking advantage of an underflow to turn this into one comparison.

To follow...

Converting floating point numbers to text

 

From http://vanillajava.blogspot.com/2011/07/java-low-level-converting-between_14.html

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}