2011-08-31 13 views
5

Necesito complementar los binarios de cadena.¿Cómo complementar los bytes en Java?

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

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

Ahora, ¿cómo puedo complementar el equivalente binario de los bytes (o cómo XOR a 11111111)?

Resultados previstos:

Si el primer carácter del st es x entonces equivalente binario es 01111000

y la salida debe ser 10.000.111 complementando (o XOR a 11111111)

+3

El operador XOR en java es '^' – evandrix

+3

Es extraño leer datos binarios usando un lector y readLine. Además, getBytes utiliza la codificación predeterminada de la plataforma. Es posible que deba especificar una codificación para transformar la cadena en bytes y hacer que el código sea portátil. –

+0

pero no sé cómo XOR a 11111111. porque ... ¿sabes cómo convertir la cadena "11111111" en byte? –

Respuesta

9

Para complementar un byte, utilice el operador ~. Así que si x es 01111000, entonces ~x es 10000111. Para XORing puede utilizar x ^= 0xFF (11111111b == 0xFF en hexadecimal)

+0

gracias por esto !!! –

1

Es necesario escribir una loop para hacerlo un byte a la vez.

1

Si tiene números como binario como "111111" se puede realizar de dos en dos-cumplido sin convertirlo a un número. Puedes hacerlo.

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); 
} 
Cuestiones relacionadas