4

BCD 値を表す 1 ('\u0031') と 0 ('\u0030') で構成される文字列があります。

具体的には、文字列は 112 文字相当の 1 と 0 であり、一度に 8 個または 16 個のいずれかを抽出し、BCD から 10 進数にデコードする必要があります。

アイデア?パッケージ?図書館?コード?どなたでも大歓迎です。

4

2 に答える 2

4

一度に 4 文字を抽出し、Integer.parseInt(string, 2) を使用すると、各桁が得られます。必要に応じて数字を組み合わせます。

于 2009-01-22T23:21:22.923 に答える
1

私はあなたがすべての楽しみを逃していると思います:

これは、Pete Kirkham が提案した基本的な実装です。

約5分かかりました。

import java.util.List;
import java.util.ArrayList;

public class Binary { 

        public static void main( String [] args ) { 

            for ( int i : Binary.fromString("0000000100100011010001010110011110001001") ) {
                System.out.print( i );      
             }  
             System.out.println();
        }

        public static List<Integer> fromString( String binaryString ) { 

            List<Integer> list   = new ArrayList<Integer>();
            StringBuilder buffer = new StringBuilder();
            int count            = 0;


            for ( char c : binaryString.toCharArray() ) {
                buffer.append( c );
                count++;

                if ( count >= 4 ) { 
                    list.add( Integer.parseInt( buffer.toString(), 2 ) );
                    count = 0;
                    buffer.delete( 0 , 4 );
                }
            }

            return list;
       }
}
于 2009-01-22T23:48:47.813 に答える