二进制字符串转换回中文

import java.util.ArrayList;

import java.util.List;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class binaryToString {

// 待处理的字符串

public static final String SOURCE = "110011101101001011000011110001111010001110101100110010101100011110111001110110101011111011111100";

public static void main(String[] args) {

// 定义正则表达式

// 匹配所有由1或0组成的8位字符

Pattern p = Pattern.compile("[10]{8}");

// 定义匹配器,与源字符串关连上

Matcher m = p.matcher(SOURCE);

// 安放匹配结果

List<Byte> list = new ArrayList<Byte>();

// 开始搜寻pattern

// 先将8位的字符串按2进制扫描为Integer

// 由于后面的须求数字再强制转成byte

// 存入list中

while (m.find()) {

list.add((byte) Integer.parseInt(m.group(), 2));

}

// 准备将list转为byte数组

// 由于String构造器参数类型的限制

byte[] b = new byte[list.size()];

// 开始转换

for (int j = 0; j < b.length; j++) {

b[j] = list.remove(0);

}

// 将数组转换为String输出

// 故意不指定字符集(GBK),让编绎器按系统默认打印

System.out.println(new String(b));

}

}