2011-08-31 43 views
5

我需要補充字符串二進制文件。如何補充java中的字節?

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

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

現在,我怎麼補充字節的二進制等價(或如何將其異或到11111111)?

預期輸出:

如果ST的第一個字符是X,則等效二進制數是01111000

和輸出必須通過補充是10000111(或XOR至11111111)

+3

Java中的XOR運算符是'^' – evandrix

+3

使用reader和readLine讀取二進制數據很奇怪。另外,getBytes使用平臺的默認編碼。您可能必須指定編碼以將字符串轉換爲字節並使代碼具有可移植性。 –

+0

但我不知道如何異或到11111111.因爲..你知道如何將字符串「11111111」轉換爲字節嗎? –

回答

9

要補充一個字節,可以使用~運算符。所以,如果x是01111000,那麼~x是10000111.對於異或,你可以使用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); 
}