バックグラウンド
大学の課題で、4 桁の 16 進数で表されるパターンを描く必要があります。これまでのところ、少し小さなことを除いて、必要なすべてを作成することができました。コードにバグがあり、A から F (または 10 進数の 10 から 17) の間の 16 進数値が役に立たなくなります。
16 進数から 10 進数値を取得し、それを 2 進数値に変換するメソッドを作成しました。
これが私が得た結果のリストです:
Decimal 1 -> Binary 1 -> CORRECT
Decimal 2 -> Binary 1 -> Should be 10
Decimal 3 -> Binary 11 -> CORRECT
Decimal 4 -> Binary 1 -> Should be 100
Decimal 5 -> Binary 101 -> CORRECT
Decimal 6 -> Binary 11 -> Should be 110
Decimal 7 -> Binary 111 -> CORRECT
Decimal 8 -> Binary 1 -> Should be 1000
Decimal 9 -> Binary 1001 -> CORRECT
Decimal 10 -> Binary 101 -> Should be 1010
Decimal 11 -> Binary 1101 -> Should be 1011
Decimal 12 -> Binary 11 -> Should be 1100
Decimal 13 -> Binary 1011 -> Should be 1101
Decimal 14 -> Binary 111 -> Should be 1110
Decimal 15 -> Binary 1111 -> CORRECT
出力は、実際には本来あるべきものの逆です。そもそも出力を逆にしたり、コードを正しい順序で出力したりするにはどうすればよいですか?
編集#2
元の投稿で言及されているように、ここでの問題は次のとおりです。
for (int i = 0; i<=3; i++){ //loops trough my pattern array
// Will receive the binary values
while (nDecimal[i]!=0){
pattern[i]= pattern[i]*10 + nDecimal[i]%2;
nDecimal[i]/=2;
System.out.println("Binary ["+i+"] " + pattern[i]);
}
正しく動作しておらず、2 進数を逆順に出力しています。要するに、変換を行うコードは次のとおりです。
int myDecimal;
int result;
while (myDecimal!=0){
result= result*10 + myDecimal%2;
myDecimal=2;
}