2010-12-11 73 views
7

如何将字符串转换为位零和位的流 我做了什么,然后将字符串转换为字符数组,然后使用方法 调用forDigit(char,int),但它不会给我字符作为0和1的流0 您可以帮助请。 也我怎么可以做一个字符反向位。 pleaes告诉我一个样品如何将字符串转换为java中的位流

回答

3

我想这一个..

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

精彩,我喜欢你回答它与我 – Bob2 2010-12-11 14:50:02

+0

的问题是,不是所有的字符位的长度相同设置,所以你不能就能够将此二进制译码因为你不知道这些位有多长。 – 2010-12-11 17:21:27

+0

谢谢鲍勃..! @Peter Lawrey每个字符都被编码为长度为7的二进制字符串。所以我猜...可以处理.. – 2010-12-11 20:07:53

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

,如果你走两步它的最简单的。字符串支持从字符串转换为字节[],而BigInteger可以将字节[]转换为二进制文本并返回。

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

打印

Text: Hello World! 
As binary: 10010000110010101101100011011000110111100100000010101110110111101110010011011000110010000100001 
As text: Hello World! 
相关问题