2013-11-10 4 views
0

У меня есть кодированная ASCII строка, которая выглядит как 3030. Каждый символ в строке ascii должен быть преобразован в 4-битную последовательность и объединен вместе, чтобы сформировать 16-битную последовательность с 4-разрядным дополнением.Пронумерованное представление битов в Java

For eg: 3030 should be converted into 
0011 0000 0011 0000 

(Пространства добавлены для удобочитаемости).

Я знаю, что мы можем отнести каждый символ к байту и выполнить операции формата String, чтобы получить двоичное представление в виде строки. Но я хотел бы сохранить двоичный формат, потому что я хочу сделать еще одну маскировку на нем.

Есть ли способ получить этот байтовый выход в java?

ответ

0
byte chartodecimal(char x) { 
    if(x >= '0' || x <= '9') { return (byte)((byte)x - (byte)'0'); } 
    throw new Exception("Not a decimal digit"); 
} 

byte[] tobcd(String s) { 
    int result_len = (s.length() + 1)/2; 
    byte[] result = new byte[result_len]; 
    for (int i = s.length() % 2, j = 0; i < result_len; i++, j += 2) { 
     result[i] = (byte)(chartodecimal(s[j]) << 4 | chartodecimal(s[j + 1])); 
    } 
    return result; 

}

Обычная оговорка: Может или не может работать, может сделать что-то отличное от того, что вы на самом деле хотите.

Смежные вопросы