黑马程序员技术交流社区
标题:
如何将一串二进制码转换成字符
[打印本页]
作者:
戴乾刚
时间:
2013-3-19 22:34
标题:
如何将一串二进制码转换成字符
本帖最后由 戴乾刚 于 2013-3-20 13:57 编辑
怎么编写一个程序将一段指定的二进制码转换成能看得懂的东东
作者:
彭颖
时间:
2013-3-19 22:46
转成ASCII~~~再转成字符可行吧
package com.itheima;
public class TestDeom {
public static void main(String[] args) throws Exception {
String info = "1101000 1100101 1101100 1101100 1101111 100000 1110111 1101111 1110010 1101100 1100100";
String[] strArray = info.split("\\s");
byte[] byteArray = new byte[strArray.length];
for(int i = 0; i < strArray.length; i ++)
byteArray[i] = (byte) Integer.parseInt(strArray[i], 2);
System.out.println(new String(byteArray, "ascii"));
}
}
复制代码
作者:
张文星
时间:
2013-3-19 22:48
要看是什么码,如果是字符的二进制码的话首先你要知道编码方式,ASCII码和Unicode编码方式是由区别的,占用的字节都不一样,如果是其他的如机器指令等,是没办法看懂的,除非翻译成编程语言,如汇编语言(用反汇编技术将机器语言反汇编成汇编语言),声音、视频等不同的格式也有不同的编码方式。
作者:
itserious
时间:
2013-3-19 22:52
//这个你最好要先知道,你的数据是什么是用什么编码编的
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));
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2