【问题标题】:Manipulation with integer int to hex conversions使用整数 int 到十六进制转换进行操作
【发布时间】:2012-01-05 10:57:48
【问题描述】:

我知道这很简单,我知道这被问了很多次,但我仍然找不到我要找的东西。

我有一个从 0 到 500 的值,它是一个整数。 我想要一个从 0x00 到 0xFF 的输出。

public void method(int i)// 0-500
{
return the_proportional_value_in_hex_in_range_0_to_ff;
}

谁能给我一个这样的转换器。谢谢

编辑

我确实不想要一个精确的转换,我只想要一个 SCALED 转换,@Mac 准确地回答了我需要的。

【问题讨论】:

  • 首先您不能在 void 方法中返回,然后值不会以十六进制或数字存储,它们都存储为二进制数,因此您可能需要将其转换为字符串。请更新您的问题
  • 我不想要精确的转换,我想要缩放
  • 你知道 0xFF 只有 256,你需要另一个位才能达到 500(或失去准确性)

标签: java hex int


【解决方案1】:

int scaled = (i * 255) / 500;

i / 500 将i 缩放到0 ... 1 的范围,然后乘以255(即0xFF)将其缩放到0 ... 255。反过来做(乘然后除)只是为了防止除法上的数字下溢。

要打印为十六进制,您可以使用System.out.printf("%x", scaled);。我说打印,因为谈论“十六进制值”并不是非常有用。

【讨论】:

    【解决方案2】:

    我有一个从 0 到 500 的值,它是一个整数。我想要一个输出 从 0x00 到 0xFF

    运气不好,这是不可能的。为此,您需要 9 位。 500 = 0x1F4。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 2014-04-16
      • 2015-09-17
      • 1970-01-01
      相关资源
      最近更新 更多