我有一个任务是编写一个程序,将一个范围从0到255的Int转换为一个有两个“数字”的十六进制。我们建议通过modulo和switch-case来做到这一点。 虽然我不确定我是否理解转换在理论上会是什么样子,但我尝试了这样:
inode->i_rdev
它显示了几个问题,基于这个事实,我不知道对话如何工作。我希望有人可以帮助我。
答案 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
迭代地做,但想法是一样的:你只需要抓取一个十六进制值的位或数组,并适当地转换它们。