Java-код или lib для декодирования двоично-десятичного числа (BCD) из строки - PullRequest
4 голосов
/ 23 января 2009

У меня есть строка, состоящая из 1 ('\ u0031') и 0 ('\ u0030'), которая представляет значение BCD.

В частности, строка имеет значение 112 символов, равное 1 и 0, и мне нужно извлекать по 8 или 16 из них одновременно и декодировать их из BCD в десятичную.

Идеи? Пакеты? Libs? Код? Все можно только приветствовать.

Ответы [ 2 ]

4 голосов
/ 23 января 2009

Извлечение 4 символов за раз и использование Integer.parseInt (строка, 2) должно давать каждую цифру. Объедините цифры по своему усмотрению.

1 голос
/ 23 января 2009

Я думаю, вам не хватает всего веселья:

Вот базовая реализация того, что предложил Пит Киркхем.

Потребовалось около 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;
       }
}
...