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

Print this page

        

*** 225,242 **** --- 225,293 ---- * @param i an integer to be converted to a string. * @return the string representation of the unsigned integer value * represented by the argument in hexadecimal (base&nbsp;16). * @see #parseUnsignedInt(String, int) * @see #toUnsignedString(int, int) + * @see #toHexString(int, int) * @since 1.0.2 */ public static String toHexString(int i) { return toUnsignedString0(i, 4); } /** * Returns a string representation of the integer argument as an + * unsigned integer in base&nbsp;16, padded with leading zeroes if + * necessary. + * + * <p>The unsigned integer value is the argument plus 2<sup>32</sup> + * if the argument is negative; otherwise, it is equal to the + * argument. This value is converted to a string of ASCII digits + * in hexadecimal (base&nbsp;16) with possibly appended leading + * zeroes. A minimum amount of zeroes is appended to ensure + * the length of the resulting string is at least {@code minWidth}. + * + * <p>The value of the argument can be recovered from the returned + * string {@code s} by calling {@link + * Integer#parseUnsignedInt(String, int) + * Integer.parseUnsignedInt(s, 16)}. + * + * <p>If the unsigned magnitude is zero, it is represented by a + * {@code minWidth} zero characters {@code '0'} ({@code '\u005Cu0030'}). + * The following characters are used as hexadecimal digits: + * + * <blockquote> + * {@code 0123456789abcdef} + * </blockquote> + * + * These are the characters {@code '\u005Cu0030'} through + * {@code '\u005Cu0039'} and {@code '\u005Cu0061'} through + * {@code '\u005Cu0066'}. If uppercase letters are + * desired, the {@link java.lang.String#toUpperCase()} method may + * be called on the result: + * + * <blockquote> + * {@code Integer.toHexString(n, 6).toUpperCase()} + * </blockquote> + * + * @param i an integer to be converted to a string. + * @param minWidth a minimum required length of the resulting string. + * @return the string representation of the unsigned integer value + * represented by the argument in hexadecimal (base&nbsp;16), + * padded with leading zeroes if necessary. + * @see #parseUnsignedInt(String, int) + * @see #toUnsignedString(int, int) + * @see #toHexString(int) + * @since 1.9 + */ + public static String toHexString(int i, int minWidth) { + return toUnsignedString0(i, 4, minWidth); + } + + + /** + * Returns a string representation of the integer argument as an * unsigned integer in base&nbsp;8. * * <p>The unsigned integer value is the argument plus 2<sup>32</sup> * if the argument is negative; otherwise, it is equal to the * argument. This value is converted to a string of ASCII digits
*** 302,312 **** public static String toBinaryString(int i) { return toUnsignedString0(i, 1); } /** ! * Convert the integer to an unsigned number. */ private static String toUnsignedString0(int val, int shift) { // assert shift > 0 && shift <=5 : "Illegal shift value"; int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val); int chars = Math.max(((mag + (shift - 1)) / shift), 1); --- 353,365 ---- public static String toBinaryString(int i) { return toUnsignedString0(i, 1); } /** ! * Format an integer (treated as unsigned) into a String. ! * @param val the value to format ! * @param shift the log2 of the base to format in (4 for hex, 3 for octal, 1 for binary) */ private static String toUnsignedString0(int val, int shift) { // assert shift > 0 && shift <=5 : "Illegal shift value"; int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val); int chars = Math.max(((mag + (shift - 1)) / shift), 1);
*** 317,327 **** // 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 --- 370,402 ---- // Use special constructor which takes over "buf". return new String(buf, true); } /** ! * Format an integer (treated as unsigned) into a String. ! * @param val the value to format ! * @param shift the log2 of the base to format in (4 for hex, 3 for octal, 1 for binary) ! * @param minWidth the minimum width of the produced String ! */ ! private static String toUnsignedString0(int val, int shift, int minWidth) { ! // assert shift > 0 && shift <=5 : "Illegal shift value"; ! int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val); ! int magLen = (mag + (shift - 1)) / shift; ! int zeroes = Math.max(Math.max(minWidth, 1) - magLen, 0); ! char[] buf = new char[magLen + zeroes]; ! ! for (int i = 0; i < zeroes; ++i) ! buf[i] = '0'; ! if (magLen > 0) ! formatUnsignedInt(val, shift, buf, zeroes, magLen); ! ! // Use special constructor which takes over "buf". ! return new String(buf, true); ! } ! ! /** ! * Format an integer (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