Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > String.format для hex


Автор: Ccoder 25.3.2011, 20:30
Здравствуйте.
Подскажите как тут быть
Мне нужно вывести
Цитата
000A

имея short = 0x0A.

Пробую так (по аналогии как и с %d)
Код

System.out.printf("%04h", (short)0x0A);

либо
Код

System.out.printf("%04H", (short)0x0A);

но получаю
Цитата

Exception in thread "AWT-EventQueue-0" java.util.FormatFlagsConversionMismatchException: Conversion = h, Flags = 0


Добавлено @ 20:31
P.S.
тоесть всегда четыре hex цифры

Автор: Galaran 26.3.2011, 13:21
Там X заместо H

Код

System.out.printf("%04X", (short)0x0A);

Автор: Ccoder 26.3.2011, 15:41
А так, благодарю.

P.S.
А в чём разница между %H и %X
Вроде оба для Hex

Автор: Galaran 27.3.2011, 05:17
http://download.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax
Цитата

'h', 'H' - If the argument arg is null, then the result is "null". Otherwise, the result is obtained by invoking Integer.toHexString(arg.hashCode()).
'x', 'X' - The result is formatted as a hexadecimal integer 


'H' возвращает hash объекта в hex виде. Если же туда подставить неотрицательное int
Код

System.out.printf("%h", 0xE);


То оно вернет его в неизменном виде и printf выведет тоже самое, что и для hex
Код

class Integer
....
    public int hashCode() {
    return value;
    }
....
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)