从Int转换为Hex在Java中不起作用

时间:2013-02-25 14:56:30

标签: java parsing int hex valueconverter

  int diny6h = Integer.parseInt(Integer.valueOf(diny6).toString(), 10);
  int diny7h = Integer.parseInt(Integer.valueOf(diny7).toString(), 10);
  diny6h=diny6h-32;
  diny7h=diny7h-32;
  System.out.println(diny6h + " + " + diny7h);
}

传入:diny6=30 diny7=20

打印:diny6h=16 diny7h=00

我想要的是:diny6h=10 diny7h=00

我在这里做错了什么?

编辑: 好吧..数字以十六进制形式发送并以小数形式接收,因为块中的其他数字(不是diny6和7,而是diny1到diny5)需要作为十六进制。但diny6和7需要作为小数但我不能按照我想要的方式得到它们我想发送一个35(十六进制)它以53(dec)的形式出现并且应该被编成10(dec)。同样的问题:想要发送一个20(十六进制)它来自一个32(十进制)并应打印为0

简而言之:

我发送35,收到53,但我需要35减少它20并获得15 ...我该怎么做?

编辑:

对不起昨天的cofusing。我需要的是将我收到的值转换为BCD号码...没有十六进制^^我现在应该删除这个问题吗?

2 个答案:

答案 0 :(得分:2)

没有错。

for diny6:

30(hex) - 32(dec) = 30(hex) - 20(hex) = 10(hex) = 16(dec)

同样适用于diny7。

默认情况下,

整数以十进制打印,这就是为什么你得到16。 如果你想以十六进制格式打印数字,请执行以下操作:

System.out.println(String.format("%x",diny6));

更新

我担心你没有完全理解数学基础。十六进制和十进制只是表示,int变量不是十进制或十六进制 - 它只是一个数字 1.读取数字的字符串表示 2.做你需要的任何计算(并且在这个阶段不要把你的自己与基地联系起来) 3.使用格式字符串将结果打印为十进制或十六进制 4.阅读有关该主题的内容。

答案 1 :(得分:0)

是我自己的错,误解了我想做的事情的意义,忽略了一些与硬件相关的要求。问题完全错了asekd。