2016-04-11 20 views
1

İçinde kodlanmış ikili sayılar içeren bir dizeyi ve ardından bir dizeyi içeren bir dosyam var. Benim kodJava'da dizeleri içeren dosyadan bayt kodu nasıl çözülür?

Thisisastring. �J 

Ben dize görmezden gelip bir boşlukla ayrılmış bayt deşifre odaklanmaya çalışın. Kodu çalıştırdığımda sonuç, ilk ikili sayı çok fazla kapalı olduğu dışında doğru gibi görünüyor.

StringBuffer buffer = new StringBuffer(); 
    File file = new File(arg); 
    FileInputStream in = new FileInputStream(file); 
    InputStreamReader isr = new InputStreamReader(in, "UTF8"); 
    Reader inn = new BufferedReader(isr); 
    int ch; 

    while ((ch = inn.read()) > -1){ 
     buffer.append((char)ch); 
    } 

    inn.close(); 

    String content = buffer.toString(); 
    String temp = new String(); 
    for(int i=0; i<content.length(); i++){ 
     temp += content.charAt(i); 
     if(content.charAt(i) == ' '){ 
      while(i != content.length()-1){ 
       i++; 
       byte b = (byte) content.charAt(i); 
       String x = Integer.toString(b & 0xFF, 2); 
       System.out.println(x); 
      } 
     } 
    } 

Sonuçlar:

11111101 <- Why is only this one incorrect? 
11000 
1001010 
1011 

beklenen Ne:

10010101 
00011000 
01001010 
1011 

cevap

1

Sen ikili veri için Readers veya Strings kullanmamalısınız.

StringBuffer buffer = new StringBuffer(); 
File file = new File(arg); 
FileInputStream in = new FileInputStream(file); 
DataInputStream dis = new DataInputStream(new BufferedInputStream(in)); 
int ch; 

while ((ch = din.read()) > -1){ 
    buffer.append((char)ch); 
    if (ch == ' ') 
    { 
     // next byte is a binary value 
     byte b = din.readByte(); 
     String x = Integer.toString(b & 0xFF, 2); 
     System.out.println(x); 
    } 
} 
İlgili konular