Печати Java четырех байтовое шестнадцатеричное число

у меня небольшая проблема. У меня есть такие числа, как 5421, -1 и 1. Мне нужно напечатать их в четырех байтах, например:

5421 -> 0x0000152D
-1   -> 0xFFFFFFFF
1    -> 0x00000001

кроме того, у меня есть числа с плавающей запятой, такие как 1.2, 58.654:

8.25f -> 0x41040000
8.26  -> 0x410428f6
0.7   -> 0x3f333333

мне нужно преобразовать оба типа чисел в шестнадцатеричные версии, но они должны быть ровно четыре байта (четыре пары шестнадцатеричных цифр).

кто-нибудь знает, как это возможно в Java? Пожалуйста помочь.

4 ответов


вот две функции, одна для целого числа, одна для float.

public static String hex(int n) {
    // call toUpperCase() if that's required
    return String.format("0x%8s", Integer.toHexString(n)).replace(' ', '0');
}

public static String hex(float f) {
    // change the float to raw integer bits(according to the OP's requirement)
    return hex(Float.floatToRawIntBits(f));
}

для целых чисел есть еще более простой способ. Используйте заглавную "X", если вы хотите, чтобы Альфа-часть шестнадцатеричного числа была прописной, в противном случае используйте " x " для нижнего регистра. "0" в форматере означает сохранение ведущих нулей.

public static String hex(int n) 
{
    return String.format("0x%04X", n);
}

вот он для поплавков:

    System.out.printf("0x%08X", Float.floatToRawIntBits(8.26f));

использовать

String hex = Integer.toHexString(5421).toUpperCase();  // 152D

получить с ведущими нулями

String hex = Integer.toHexString(0x10000 | 5421).substring(1).toUpperCase();