整数の配列があります。for ループを使用して各値を読み取ります。ここで、各値のバイナリを追加し、追加されたバイナリの 10 進数を取得したいと考えています。
例えば。
array=> 01 05
binary=> 00000001 00000101 appended
binary=> 0000000100000101 これにより、10 進数の 261 が得られます。
どうすればいいですか?
助けてください。
これは宿題ではないので、「バイナリに変換する」という非効率な中間ステップを実行する必要はありません (コンピュータの整数は、既にバイナリ形式で格納されています!)
public class Testy {
public static void main(String[] args) {
int[] arr = new int[] { 1, 5 };
int sum = 0;
for (int i = 0; i < arr.length; i++) {
int val = arr[i];
sum = (sum << 8) + val;
}
System.out.println("final: " + sum);
}
}
また、3 つ以上の整数を含める場合はsum
、 のlong
代わりに を作成する必要int
があります。そうしないと、オーバーフローが発生する可能性があります。
ところで、あなたの for ループはどのように値を取得していますか? 個々のバイトを読み取って int に変換する場合は、エンディアンに注意してください。
public class Testy {
public static void main(String[] args) {
int[] arr = new int[] { 1, 5 };
StringWriter sw = new StringWriter();
for (int i = 0; i < arr.length; i++) {
int val = arr[i];
String s = String.format("%08s", Integer.toBinaryString(val));
sw.append(s);
}
System.out.println("final: " + Integer.parseInt(sw.toString(), 2));
}
}
結果:261。お役に立てば幸いです:)