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',