0


整数の配列があります。for ループを使用して各値を読み取ります。ここで、各値のバイナリを追加し、追加されたバイナリの 10 進数を取得したいと考えています。

例えば。

array=> 01 05
binary=> 00000001 00000101 appended
binary=> 0000000100000101 これにより、10 進数の 261 が得られます。

どうすればいいですか?

助けてください。

4

2 に答える 2

2

これは宿題ではないので、「バイナリに変換する」という非効率な中間ステップを実行する必要はありません (コンピュータの整数は、既にバイナリ形式で格納されています!)

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 に変換する場合は、エンディアンに注意してください。

于 2011-04-13T05:23:07.113 に答える
1
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。お役に立てば幸いです:)

于 2011-04-13T04:43:02.577 に答える