Java low level: Converting between integers and text (part 2)
Join the DZone community and get the full member experience.
Join For FreeParsing 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.
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.
Comments