2010-12-11 23 views
7

Comment convertir une chaîne en un flux de bits zéros et uns ce que j'ai fait, je prends une chaîne puis la convertir en un tableau de char puis j'ai utilisé la méthode appelée forDigit (char, int), mais il ne me donne pas le caractère d'un flux de 0 et 1 pourriez-vous aider s'il vous plaît. aussi comment pourrais-je faire l'inverse de peu à un char. pleaes me montrer un échantillonComment convertir une chaîne en un flux de bits en Java

Répondre

3

J'ai essayé un ..

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

merveilleux que je vous aime répondre à cela fonctionne avec moi – Bob2

+0

Le problème est que tous les personnages sont de la même longueur de bits réglée, de sorte que vous ne seriez pas en mesure de décoder ce binaire séquence car vous ne saurez pas combien de temps les bits sont. –

+0

merci bob ..! @Peter Lawrey chaque caractère est encodé en chaîne binaire de longueur 7. Donc je suppose que .. il peut être manipulé .. –

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

Son plus facile si vous prenez deux étapes. String prend en charge la conversion de String vers/from byte [] et BigInteger peut convertir byte [] en texte binaire et en retour.

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

Prints

Text: Hello World! 
As binary: 10010000110010101101100011011000110111100100000010101110110111101110010011011000110010000100001 
As text: Hello World!