2011-08-31 8 views
5

Potrzebuję uzupełniać pliki binarne ciągów.Jak uzupełniać bajty w języku Java?

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

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

Teraz jak mogę uzupełniać binarny odpowiednik bajtów (lub jak XOR go do 11111111)?

oczekiwany wynik:

Jeśli pierwszy char st jest x wtedy ekwiwalent binarny jest 01.111.000

i wyjście musi być 10000111 uzupełniając (lub XOR do 11111111)

+3

Operator XOR w java to '^' – evandrix

+3

Dziwaczne jest czytanie danych binarnych za pomocą czytnika i readLine. Ponadto getBytes używa domyślnego kodowania platformy. Być może trzeba będzie określić kodowanie, aby przekształcić ciąg w bajty i uczynić kod przenośnym. –

+0

ale nie wiem, jak XOR do 11111111. bo .. czy wiesz, jak przekonwertować ciąg "11111111" do bajtu? –

Odpowiedz

9

Aby uzupełnić bajt, należy użyć operatora ~. Więc jeśli x jest 01111000, a następnie ~x jest 10000111. Dla XORing można użyć x ^= 0xFF (11111111b == 0xFF w hex)

+0

dzięki za to !!! –

1

Trzeba napisać Pętla, aby zrobić to jeden bajt na raz.

1

Jeśli masz numery jak binarny, takie jak „111111” można wykonać dwójkami-komplement bez konwertowania go do numer. Możesz to zrobić.

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