我有一个小问题。我有像 5421、-1 和 1 这样的数字。我需要用四个字节打印它们,例如:
5421 -> 0x0000152D
-1 -> 0xFFFFFFFF
1 -> 0x00000001
另外,我有浮点数,如 1.2、58.654:
8.25f -> 0x41040000
8.26 -> 0x410428f6
0.7 -> 0x3f333333
我需要将两种类型的数字转换为它们的十六进制版本,但它们必须正好是四个字节长(四对十六进制数字)。
有谁知道这在 Java 中是如何实现的?请帮忙。
这里有两个函数,一个用于整数,一个用于浮点数。
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();