Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,从Int到Hex的转换不起作用_Java_Parsing_Int_Hex_Valueconverter - Fatal编程技术网

在Java中,从Int到Hex的转换不起作用

在Java中,从Int到Hex的转换不起作用,java,parsing,int,hex,valueconverter,Java,Parsing,Int,Hex,Valueconverter,传入:diny6=30diny7=20 打印:diny6h=16diny7h=00 我想要的:diny6h=10diny7h=00 我做错了什么 编辑: 好。。由于块中的其他数字(不是diny6和7,而是diny1到diny5)需要作为六进制数,因此这些数字以六进制数发送,以十进制数接收。但是第六和第七是需要的小数,但我不能得到他们的方式,我想发送一个35(十六进制),它来作为53(十二月),应该是10(十二月)。同样的问题:想要发送一个20(十六进制),它是32(十二进制),应该打印为0 简言

传入:
diny6=30
diny7=20

打印:
diny6h=16
diny7h=00

我想要的:
diny6h=10
diny7h=00

我做错了什么

编辑: 好。。由于块中的其他数字(不是diny6和7,而是diny1到diny5)需要作为六进制数,因此这些数字以六进制数发送,以十进制数接收。但是第六和第七是需要的小数,但我不能得到他们的方式,我想发送一个35(十六进制),它来作为53(十二月),应该是10(十二月)。同样的问题:想要发送一个20(十六进制),它是32(十二进制),应该打印为0

简言之:

我发送了35,收到了53,但我需要35减少20,得到15。。。我该怎么做

编辑:

我为我昨天喝咖啡感到抱歉。我需要的是将收到的值转换为BCD编号。。。没有十六进制字符^^我现在应该删除这个问题吗?

没有错误

对于diny6:

30(十六进制)-32(十二进制)=30(十六进制)-20(十六进制)=10(十六进制)=16(十二进制)

diny7也是如此

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

  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);
}
更新:

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

4.仔细阅读这个主题。

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

你真正想要实现什么?30十进制不是10十六进制,20十进制不是00十六进制我相信这不是精确的打印输出。您正在将整数转换为十六进制,并使用
int
变量保存结果?你将如何表示从A到F的“数字”?另外,这一行的要点是:
Integer.parseInt(Integer.valueOf(diny7.toString(),10)?假设
diny7
是一个字符串,然后将字符串转换为整数,再将字符串转换为整数-嗯?sry,忘了提及。。输入值减少20,你认为“十六进制”是什么意思?因为据我所知,你问题中的任何内容都与十六进制无关。好吧,那么它们被打印成十六进制,但我需要这些数字来更新文本字段并做一些数学计算。
System.out.println(String.format("%x",diny6));