2011-08-31 5 views
5

문자열 바이너리를 보완해야합니다.자바에서 바이트를 보완하는 방법은 무엇입니까?

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

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

지금 어떻게 바이트의 바이너리 동등한를 보완 할 수 있습니다 (또는 어떻게 11111111로 XOR하는)?

예상 출력 :

일의 첫 번째 문자는 다음 X 바이너리 상당 인 경우는 01111000

이며, 출력은 보완하여 10000111 일 (또는 11111111 XOR) 당신은 쓸 필요

+3

XOR 연산자 그것이 리더 작성한 Readline하여 바이너리 데이터를 읽어 엽기의 '^' – evandrix

+3

이다. 또한 getBytes는 플랫폼의 기본 인코딩을 사용합니다. 문자열을 바이트로 변환하고 코드를 이식성있게 만들려면 인코딩을 지정해야 할 수도 있습니다. –

+0

하지만 11111111에 XOR하는 법을 모르겠습니다. 왜냐하면 .. "11111111"문자열을 바이트로 변환하는 방법을 알고 계십니까? –

답변

9

바이트를 보완하려면 ~ 연산자를 사용합니다. x가 01111000 인 경우, 다음 ~x (== 11111111b 진수의 0xFF를) 당신이 x ^= 0xFF를 사용할 수 XOR 연산을 위해 10000111.

+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); 
} 
관련 문제