2010-12-11 15 views
7

Jak przekonwertować ciąg na strumień bitów zer i jedynek co zrobiłem wziąć ciąg, a następnie przekonwertować go do tablicy char następnie użyłem metody o nazwie forDigit (char, int), ale nie daje mi postaci w postaci strumienia 0 i 1 możesz pomóc. również, jak mogę zrobić odwrotny od bitu do char. pleaes pokazać mi próbkęJak przekonwertować ciąg na strumień bitów w java

Odpowiedz

3

Próbowałem ten jeden ..

public String toBinaryString(String s) { 

    char[] cArray=s.toCharArray(); 

    StringBuilder sb=new StringBuilder(); 

    for(char c:cArray) 
    { 
     String cBinaryString=Integer.toBinaryString((int)c); 
     sb.append(cBinaryString); 
    } 

    return sb.toString(); 
} 
+0

wspaniały i jak odbierasz to działa ze mną – Bob2

+0

Problem polega na tym, że nie wszystkie postacie są tej samej długości bitów ustawione, więc nie będzie w stanie dekodować ten binarny sekwencja, ponieważ nie będziesz wiedział, jak długo są te bity. –

+0

dzięki Bob.! @ Peter Lawrey każdy znak jest zakodowany w łańcuchu binarnym o długości 7. Tak więc domyślam się, że można go obsłużyć .. –

0
String strToConvert = "abc"; 
byte [] bytes = strToConvert.getBytes(); 
StringBuilder bits = new StringBuilder(bytes.length * 8); 
System.err.println(strToConvert + " contains " + bytes.length +" number of bytes"); 
for(byte b:bytes) { 
    bits.append(Integer.toString(b, 2)); 
} 

System.err.println(bits); 
char [] chars = new char[bits.length()]; 
bits.getChars(0, bits.length(), chars, chars.length); 
10

Jego najłatwiej jeśli wziąć dwa kroki. String obsługuje konwersję z String na/z bajtu [], a BigInteger może konwertować bajt [] na tekst binarny iz powrotem.

String text = "Hello World!"; 
System.out.println("Text: "+text); 

String binary = new BigInteger(text.getBytes()).toString(2); 
System.out.println("As binary: "+binary); 

String text2 = new String(new BigInteger(binary, 2).toByteArray()); 
System.out.println("As text: "+text2); 

Drukuje

Text: Hello World! 
As binary: 10010000110010101101100011011000110111100100000010101110110111101110010011011000110010000100001 
As text: Hello World! 
Powiązane problemy