2011-08-31 3 views
5

Мне нужно дополнить двоичные файлы.Как дополнить байты в java?

st=br.readLine() //I used readline to read string line

byte[] bytesy = st.getBytes(); //and put it to bytes array.

Теперь, как я могу дополнить двоичный эквивалент байтов (или как XOR его 11111111)?

Ожидаемые результаты:

Если первый символ св есть х, то двоичный эквивалент является 01111000

и выход должен быть 10000111 путем дополнения (или исключающее ИЛИ с 11111111)

+3

Оператор XOR в java is '^' – evandrix

+3

Приятно читать двоичные данные с помощью считывателя и readLine. Кроме того, getBytes использует стандартную кодировку платформы. Возможно, вам придется указать кодировку, чтобы преобразовать строку в байты и сделать код переносимым. –

+0

но я не знаю, как XOR to 11111111. потому что .. вы знаете, как преобразовать строку «11111111» в байт? –

ответ

9

В дополнение к байт вы используете оператор ~. Так что если х 01111000, то ~x является 10000111. Для XORing вы можете использовать x ^= 0xFF (11111111b == 0xFF в шестнадцатеричном)

+0

спасибо за это !!! –

1

Вы должны написать чтобы сделать это по одному байту за раз.

1

Если у вас есть номера, как двоичные, такие как «111111» вы можете выполнить двойки-комплимент без преобразования его в число. Вы можете сделать это.

BufferedReader br = 
int ch; 
while((ch = br.read()) >= 0) { 
    switch(ch) { 
     case '0': ch = '1'; break; 
     case '1': ch = '0'; break; 
    } 
    System.out.print(ch); 
} 
Смежные вопросы