2011-08-31 20 views
5

Dize ikili dosyalarını tamamlamam gerekiyor.Java'da baytlar nasıl tamamlanır?

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

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

Şimdi nasıl bayt ikili eşdeğer tamamlayabilir (ya da nasıl 11111111 bunu XOR için)?

Beklenen çıkışı:

st bir ilk karakter sonra x ikili eşdeğer ise 01111000

ve çıkış tamamlayarak 10000111 olmak (veya 11111111 için XOR) Bir yazmaya gerek

+3

java'daki XOR operatörü, '^' – evandrix

+3

Bir okuyucu ve readLine kullanarak ikili verileri okumak gariptir. Ayrıca getBytes, platformun varsayılan kodlamasını kullanır. Dizeyi baytlara dönüştürmek ve kodu taşınabilir hale getirmek için bir kodlama belirtmeniz gerekebilir. –

+0

ama XOR'u 11111111'e nasıl yapacağımı bilmiyorum. Çünkü "11111111" dizesini bayt'a nasıl dönüştüreceğinizi biliyor musunuz? –

cevap

9

Bir baytı tamamlamak için, ~ işlecini kullanırsınız. x 01111000 ise, o zaman ~x (== 11111111b hex 0XFF) Eğer x ^= 0xFF kullanabilirsiniz xoring için 10000111.

+0

Bunun için teşekkürler !!! –

1

gerekir Bir seferde bir bayt yapmak için döngü.

1

olduğunu Yani dönüştürmeden böyle "111111" Eğer ikiler-iltifat gerçekleştirebilirsiniz olarak ikili olarak numaralar varsa bir sayı. Bunu yapabilirsiniz.

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); 
} 
İlgili konular