黑马程序员技术交流社区

标题: 如何将一串二进制码转换成字符 [打印本页]

作者: 戴乾刚    时间: 2013-3-19 22:34
标题: 如何将一串二进制码转换成字符
本帖最后由 戴乾刚 于 2013-3-20 13:57 编辑

怎么编写一个程序将一段指定的二进制码转换成能看得懂的东东
作者: 彭颖    时间: 2013-3-19 22:46
转成ASCII~~~再转成字符可行吧
  1. package com.itheima;

  2. public class TestDeom {
  3.         public static void main(String[] args) throws Exception {
  4.                 String info = "1101000 1100101 1101100 1101100 1101111 100000 1110111 1101111 1110010 1101100 1100100";
  5.                 String[] strArray = info.split("\\s");
  6.                 byte[] byteArray = new byte[strArray.length];
  7.                 for(int i = 0; i < strArray.length; i ++)
  8.                 byteArray[i] = (byte) Integer.parseInt(strArray[i], 2);
  9.                 System.out.println(new String(byteArray, "ascii"));
  10.                 }
  11. }
复制代码

作者: 张文星    时间: 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