在Java中整数为两位十六进制数

时间:2011-12-31 17:32:57

标签: java integer hex

我需要在Java中将整数值更改为2位十六进制值。有没有办法解决这个问题。 感谢

我最大的数字是63,最小的数字是0。 我希望小值的前导零。

7 个答案:

答案 0 :(得分:130)

String.format("%02X", value);

如果您使用X代替x as suggested by aristar,则无需使用.toUpperCase()

答案 1 :(得分:27)

Integer.toHexString(42);

Javadoc:http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#toHexString(int)

请注意,这可能会给你超过2位数! (一个整数是4个字节,所以你可能会得到8个字符。)

只要你绝对确定你只处理单字节值(255或更少),这里有点破解你的填充:

Integer.toHexString(0x100 | 42).substring(1)

Left padding integers (non-decimal format) with zeros in Java处的更多(更好)解决方案。

答案 2 :(得分:24)

String.format("%02X", (0xFF & value));    

答案 3 :(得分:14)

使用Integer.toHexString()。如果你最终得到一个数字,别忘了用前导零填充。如果您的整数大于255,您将获得超过2位数。

StringBuilder sb = new StringBuilder();
sb.append(Integer.toHexString(myInt));
if (sb.length() < 2) {
    sb.insert(0, '0'); // pad with leading zero if needed
}
String hex = sb.toString();

答案 4 :(得分:3)

如果您只是需要打印它们,请尝试:

for(int a = 0; a < 255; a++){
    if( a % 16 == 0){
        System.out.println();
    }
    System.out.printf("%02x ", a);
}

答案 5 :(得分:0)

我用它来获取一个字符串,表示每个字节用空格分隔的整数的等效十六进制值 EX:4个字节中的260的十六进制值= 00 00 01 04

    public static String getHexValString(Integer val, int bytePercision){
    StringBuilder sb = new StringBuilder();
    sb.append(Integer.toHexString(val));

    while(sb.length() < bytePercision*2){
        sb.insert(0,'0');// pad with leading zero
    }

    int l = sb.length(); // total string length before spaces
    int r = l/2; //num of rquired iterations

    for (int i=1; i < r;  i++){
        int x = l-(2*i); //space postion
        sb.insert(x, ' ');
    }
    return sb.toString().toUpperCase();         
}

public static void main(String []args){
    System.out.println("hex val of 260 in 4 bytes = " + getHexValString(260,4));
}

答案 6 :(得分:0)

根据GabrielOshiro,如果您想将整数格式设置为8号长度,请尝试

String.format("0x%08X", 20) //print 0x00000014