A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戴乾刚 中级黑马   /  2013-3-19 22:34  /  2111 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 戴乾刚 于 2013-3-20 13:57 编辑

怎么编写一个程序将一段指定的二进制码转换成能看得懂的东东

点评

如果你的问题已经得到解决,请及时将主题改为[已解决],如果还有问题请继续追问,否则将扣除技术分,谢谢  发表于 2013-3-20 12:08

3 个回复

倒序浏览
转成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. }
复制代码

评分

参与人数 2技术分 +2 收起 理由
黄玉昆 + 1
猫腻 + 1

查看全部评分

回复 使用道具 举报
要看是什么码,如果是字符的二进制码的话首先你要知道编码方式,ASCII码和Unicode编码方式是由区别的,占用的字节都不一样,如果是其他的如机器指令等,是没办法看懂的,除非翻译成编程语言,如汇编语言(用反汇编技术将机器语言反汇编成汇编语言),声音、视频等不同的格式也有不同的编码方式。
回复 使用道具 举报
//这个你最好要先知道,你的数据是什么是用什么编码编的

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

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马