Как дополнить байты в Java? - PullRequest
5 голосов
/ 31 августа 2011

Мне нужно дополнить строковые двоичные файлы.

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

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

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

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

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

и вывод должен быть 10000111 путем дополнения (или XOR до 11111111)

Ответы [ 3 ]

9 голосов
/ 31 августа 2011

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

1 голос
/ 31 августа 2011

Если у вас есть двоичные числа, такие как «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);
}
1 голос
/ 31 августа 2011

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

...