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号码...没有十六进制^^我现在应该删除这个问题吗?
答案 0 :(得分:2)
没有错。
for diny6:
30(hex) - 32(dec) = 30(hex) - 20(hex) = 10(hex) = 16(dec)
整数以十进制打印,这就是为什么你得到16。 如果你想以十六进制格式打印数字,请执行以下操作:
System.out.println(String.format("%x",diny6));
更新
我担心你没有完全理解数学基础。十六进制和十进制只是表示,int
变量不是十进制或十六进制 - 它只是一个数字
1.读取数字的字符串表示
2.做你需要的任何计算(并且在这个阶段不要把你的自己与基地联系起来)
3.使用格式字符串将结果打印为十进制或十六进制
4.阅读有关该主题的内容。
答案 1 :(得分:0)
是我自己的错,误解了我想做的事情的意义,忽略了一些与硬件相关的要求。问题完全错了asekd。