UNICODE字符串与二进制字符串互转
有时会使用到的字符串与二进制字符串互相转换。
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
public class Test {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
String src = "discover1";
String origin = "";
char [] strs = src.toCharArray();
System.out.println(Arrays.toString(strs));
/**字符串转二进制串,调用Integer.toBinaryString(Char char)*/
for(int i = 0; strs.length > i; i++){
origin += Integer.toBinaryString(strs[i]) + " ";
}
System.out.println("字符串转二进制串结果" + origin);
/**二进制串转字符串,
* 1:需要先将二进制字符串中的每一段转为CHAR类型()
* 转法为:将此段二进制字符串转为INT数组,从INT数组中得到CHAR
* 转时应该注意每一段二进制字符串的长度能够转为一个CHAR
* 2:将得到的每一个CHAR组成数组,使用String.valueOf(char [] )来得到字符串
* */
String [] strarray = origin.split(" ");
char [] preToStr = new char[strarray.length];
for(int i = 0; i < strarray.length; i++){
preToStr[i] = binstrToChar(strarray[i]);
}
String s = new String(preToStr);
System.out.println(s);
System.out.println("二进制串转字符串结果:" + String.valueOf(preToStr));
}
// 将二进制字符串转换为char
private static char binstrToChar(String binStr) {
int[] temp = BinstrToIntArray(binStr);
int sum = 0;
for (int i = 0; i < temp.length; i++) {
sum += temp[temp.length - 1 - i] << i;
}
return (char) sum;
}
// 将二进制字符串转换成int数组
private static int[] BinstrToIntArray(String binStr) {
char[] temp = binStr.toCharArray();
int[] result = new int[temp.length];
for (int i = 0; i < temp.length; i++) {
result[i] = temp[i] - 48;
}
return result;
}
}