我知道很简单,我知道很多次被问过,但我找不到我要找的东西。
我的值为0到500,它是一个int。 我希望输出从0x00到0xFF。
public void method(int i)// 0-500
{
return the_proportional_value_in_hex_in_range_0_to_ff;
}
有人可以用这种方式给我翻转。感谢
修改
我做 NOT 想要一个精确的转换,我只想要一个SCALED转换,@Mac正好回答了我需要的。
答案 0 :(得分:2)
int scaled = (i * 255) / 500;
i / 500
将i
缩放到范围0 ... 1
,然后乘以255(即0xFF
),将其缩放到0 ... 255
。反之亦然(乘除然后除)只是为了防止除数上的数字下溢。
要以十六进制打印,您可以使用System.out.printf("%x", scaled);
。我说打印,因为谈论“十六进制值”并不是非常有用。
答案 1 :(得分:0)
运气不好,这是不可能的。你需要9位。 500 = 0x1F4。我的值为0到500,它是一个int。我想要一个输出 从0x00到0xFF