您的位置:首页 > 其它

字符串和二进制及二进制和字符串之间的相互转换

2012-11-29 00:00 197 查看
public class B{
/**
* 字符串与比特流, 比特流与字符串之间的相互转换
* 输入一个字符串,使用String的getBytes()方法获得字节数组,使用Integer的toBinaryString()方法
* 将字节数组转换成比特流
* 从比特流构造字符串则相反,将比特流分割成7个字符的片段,然后通过Integer的valueOf()方法用二进制进行
* 分析后得到十进制表示的Integer,再用byteValue()方法转换成字节码并构造字节数组,最后通过String的构
* 造方法构造字符串即可
*/
public static void main(String[] args){

String s="opiujkluiop";
//用StringBuffer来存储一长串的字符串转换成的比特流
StringBuffer sb = new StringBuffer();
String s1 = "";
//获得字符串的字节码数组
byte[] b = s.getBytes();
int j = 1;
for(int i=0; i<b.length; i++){
//将字节数组转换成二进制
s1 =Integer.toBinaryString(b[i]);
System.out.println(j+"-----"+s1);
//将二进制字符串存储到StringBuffer中
sb.append(s1);
j++;
}
System.out.println(sb);
getString(sb);
}
//用存储二进制字符的StringBuffer长生字符串
public static void getString(StringBuffer sb){
//获得一串二进制字符
StringBuffer buffer = sb;
String s ="";
//构造的字节数组长度仅为二进制字符流长度的1/7,否则空的字节数组部分会长生不必要的字符
byte[] b = new byte[buffer.length()/7];
int j=0, k=0;
//将二进制字符流七个一组地进行分割
for(int i=0; i<buffer.length(); i+=7){
j=i+7;
System.out.println(buffer.substring(i, j));
//用七个二进制字符构造一个字节并保存到字节数组中
b[k++]=Integer.valueOf(buffer.substring(i, j), 2).byteValue();
}
//构造字符串并进行输出。
System.out.println(new String(b));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息