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

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

}

转载于:https://my.oschina.net/u/266531/blog/92826

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值