使用两位数将Convertig Int转换为十六进制而不使用Java中的导入

时间:2016-11-01 19:36:13

标签: java hex

我有一个任务是编写一个程序,将一个范围从0到255的Int转换为一个有两个“数字”的十六进制。我们建议通过modulo和switch-case来做到这一点。 虽然我不确定我是否理解转换在理论上会是什么样子,但我尝试了这样:

inode->i_rdev

它显示了几个问题,基于这个事实,我不知道对话如何工作。我希望有人可以帮助我。

3 个答案:

答案 0 :(得分:2)

此代码可以无导入,只需使用String自己的格式方法

private static String intToHex(int input) {
    return String.format("0x%02x", input);
}

这与使用printf(...)

几乎相同

答案 1 :(得分:1)

以下是一些提示:

  • 考虑一串十六进制字母:String hexletters = "0123456789ABCDEF";
  • num的第一个十六进制数字是num / 16:0到15之间的数字(含)
  • num的第二个十六进制数字是num % 16:0到15之间的数字(含)
  • 字符串具有.charAt(index)函数,该函数返回指定索引处的字符。

您应该能够将这些元素的解决方案拼凑在一起。

答案 2 :(得分:-1)

考虑它的简单方法是首先考虑二进制。

数字0-255最多为2^8,或者为8位数字:

11111111

知道了这一点,我们可以将这些位分成两组,每组4个,或2^4(范围0-15也称为十六进制)

1111 1111

然后,这是一个适当的转换问题。我通常使用的一种算法(你有时会在低级语言中看到)使用模数和余数:

public String intToHex(int in) {
    if (in < 16) {
        return in < 10 ? "" + in : 'A' + (in - 10); //format our hex values
    }
    //build 1 digit at a time
    int high = in / 16; //our remaining value to determine
    high = in >>> 4; //or, you could also shift right by 4 bits
    int rem = in % 16;
    return intToHex(high) + intToHex(rem);
}

你也可以用StringBuilder迭代地做,但想法是一样的:你只需要抓取一个十六进制值的位或数组,并适当地转换它们。