src/share/classes/java/lang/Integer.java

Print this page
rev 10110 : 8050114: Expose Integer/Long formatUnsigned methods internally
Reviewed-by: mduigou

*** 317,344 **** // Use special constructor which takes over "buf". return new String(buf, true); } /** ! * Format a long (treated as unsigned) into a character buffer. * @param val the unsigned int to format * @param shift the log2 of the base to format in (4 for hex, 3 for octal, 1 for binary) * @param buf the character buffer to write to * @param offset the offset in the destination buffer to start at * @param len the number of characters to write - * @return the lowest character location used */ ! static int formatUnsignedInt(int val, int shift, char[] buf, int offset, int len) { ! int charPos = len; int radix = 1 << shift; int mask = radix - 1; ! do { ! buf[offset + --charPos] = Integer.digits[val & mask]; val >>>= shift; ! } while (val != 0 && charPos > 0); ! ! return charPos; } final static char [] DigitTens = { '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', --- 317,347 ---- // Use special constructor which takes over "buf". return new String(buf, true); } /** ! * Format an {@code int} (treated as unsigned) into a character buffer. If ! * {@code len} exceeds the formatted ASCII representation of {@code val}, ! * {@code buf} will be padded with leading zeroes. ! * * @param val the unsigned int to format * @param shift the log2 of the base to format in (4 for hex, 3 for octal, 1 for binary) * @param buf the character buffer to write to * @param offset the offset in the destination buffer to start at * @param len the number of characters to write */ ! static void formatUnsignedInt(int val, int shift, char[] buf, int offset, int len) { ! // assert shift > 0 && shift <=5 : "Illegal shift value"; ! // assert offset >= 0 && offset < buf.length : "illegal offset"; ! // assert len > 0 && (offset + len) <= buf.length : "illegal length"; ! int charPos = offset + len; int radix = 1 << shift; int mask = radix - 1; ! while (charPos > offset) { ! buf[--charPos] = Integer.digits[val & mask]; val >>>= shift; ! } } final static char [] DigitTens = { '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1',