-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)が16進数として必要であるため、数字は16進数として送信され、10進数として受信されます。しかし、diny6 と 7 は 10 進数として必要ですが、35 (16 進数) を送信したいのですが、53 (10 進数) として入力され、10 (10 進数) として出力されます。同じ問題: 20(16 進数) を送信したい場合、32(10 進数) として送信され、0 として出力されます。

要するに:

私は 35 を送信し、53 として受信しましたが、20 だけ減らして 15 を取得するには 35 が必要です...どうすればよいですか?

編集:

昨日は混同して申し訳ありません。必要なのは、受信した値を BCD 番号に変換することです... 16 進数は何もありません ^^ 今この質問を削除する必要がありますか?

4

2 に答える 2

2

何も問題はありません。

dyny6 の場合:

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

diny7 についても同様です。

デフォルトでは、整数は 10 進数で出力されるため、16 が得られます。数値を 16 進数形式で出力したい場合は、次のようにします。

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

アップデート:

残念ながら、あなたは数学的根拠を完全には理解していません。16 進数と 10 進数は単なる表現であり、int変数は 10 進数でも 16 進数でもなく、単なる数値です。
1. 数値の文字列表現を読み取ります。
2. 必要な計算をすべて行います (この段階では、ベースを気にしないでください)。
3. フォーマット文字列を使用して、結果を 10 進数または 16 進数として出力します。
4. 主題について読んでください。

于 2013-02-25T15:05:38.980 に答える
0

私自身のせいで、やりたいことの意味を誤解し、ハードウェア関連の要件を無視しました。質問は完全に間違っています。

于 2013-03-01T09:43:47.733 に答える