-2
  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(十进制)的形式出现,应该打印为 10(十进制)。同样的问题:想要发送一个 20(十六进制),它以 32(十进制)的形式出现,应该打印为 0

简而言之:

我发送 35,收到 53,但我需要 35 将其减​​少 20 并获得 15……我该怎么做?

编辑:

我为我昨天的混乱感到抱歉。我需要将收到的值转换为 BCD 数字...没有十六进制 ^^ 我现在应该删除这个问题吗?

4

2 回答 2

2

没有错误。

对于 diny6:

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

diny7 也是如此。

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

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

更新:

恐怕你没有完全理解数学基础。hex 和 dec 只是表示形式,int变量不是十进制或十六进制 - 它只是一个数字。
1.读取数字的字符串表示。
2. 做任何你需要的计算(在这个阶段不要让你自己关心基础)。
3. 使用格式字符串将结果打印为十进制或十六进制。
4. 阅读主题。

于 2013-02-25T15:05:38.980 回答
0

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

于 2013-03-01T09:43:47.733 回答