2

Android で 8 ビットのバイナリ文字列をインクリメントする効率的な関数を作成したいと考えています。

for(int b1=0;b1<256;b1++){

        String bin1 = Integer.toBinaryString(b1);

        long inb = Long.parseLong(bin1);

        String binfinal = String.format("%08d",inb);

                    text1.setText(binfinal);

                    String str1 =  binfinal.replace("1", "a");
            String str2 =  str1.replace("0", "_");

                    text2.setText(str2); 

}

結果: 00000000 00000001 00000010 .........

4

1 に答える 1

2

効率を求めている場合、これよりもはるかに高速になることはありません...

for(int i = 0; i < 256; i++){

            /* Print out the first 8 bits */
            /* For 16 bits, put this as the first line of the loop:
               for(int j = 32768; j > 0; j >>= 1)
            */
            for(int j=128; j > 0; j >>= 1){

                if((j & i) != 0)
                    System.out.print('1');
                else
                    System.out.print('0');

            }
            System.out.print(' ');
}

これは同様の出力を生成しますが、要件を満たしている場合は肯定的ではありません。これは i の値を受け取り、文字列に変換します。i はループによってインクリメントされるため、バイナリ文字列をインクリメントするのと同じ結果になります。

編集:ここに文字列があります

for(int i = 0; i < 256; i++){

            String result = "";

            for(int j=128; j > 0; j >>= 1){

                if((j & i) != 0)
                    result += "1";
                else
                    result += "0";

            }
            // now do whatever you want with the String result
}
于 2013-10-10T16:36:45.340 に答える