字符串和二進制及二進制和字符串之間的相互轉換

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

}
相關文章
相關標籤/搜索