黑马程序员技术交流社区

标题: 十六进制和文本之间的转化 [打印本页]

作者: L10052108    时间: 2016-11-6 17:58
标题: 十六进制和文本之间的转化
我之前做单片机进行通讯的时候,因为文本转化成十六进制费了不少的功夫,总是需要查看ascii码表,很早就有想法,写一段小程序,把十六进制转成二进制。现在我学习了java,虽说现在很少用到这些功能,还是想实现这个功能。
[attach]134183[/attach]
我的目的,是仿照串口调试助手中的.HEX 显示的功能。
我自己的程序不能这样做,我做的比较的简单。只有两个文本框
点击,转成十六进制,文本内容就会转成,相应的十六进制,在十六进制框中显示。
点击转成文本,下面文本框中的内容转成文本,在文本框中显示
下面说说代码的实现:
转成十六进制,步骤:
1,  获取文本框中的文本。
2,  把文本转化成字节
3,  每个字节计算出的十六进制数。
4,  字符串进行拼接

5,  在十六进制框中显示
[AppleScript] 纯文本查看 复制代码
   private void btnToHexActionPerformed(java.awt.event.ActionEvent evt) {                                         
        StringBuilder sb = new StringBuilder();

        // 获取文本框中的内容
        String str = this.txtChar.getText();

        // 转化成字节数组
        byte[] bys = str.getBytes();

        // 转化成二进制
        for (int x = 0; x < bys.length; x++) {
            if (bys[x] < 0x10) {
                sb.append("0x0").append(Integer.toHexString(bys[x])).append(" ");
            } else {
                sb.append("0x").append(Integer.toHexString(bys[x])).append(" ");
            }

        }

        // 显示出来
        this.TxtHex.setText(sb.toString());

    }                                       

转化成,文本
1,  读取十六进制文本框中的内容。
2,  使用正则表示式,获取每一个代表一个字节的字符串
3,  解析字符串,转化成字节
4,  把字节数组转化成字符串
5,  在文本 框中显示
[AppleScript] 纯文本查看 复制代码
private void btnToCharActionPerformed(java.awt.event.ActionEvent evt) { 
        // TODO add your handling code here:
        String str = this.TxtHex.getText();
   

        byte[] bys = new byte[65525];
        int index = 0;

        // 使用正则表达式,规则; 两边是边界, 0x 出现一次,后面两位是0-f大小写
        String regex = "\\b[0][x][0-9A-Fa-f]{2}\\b";

        //  把规则编译成模式
        Pattern p = Pattern.compile(regex);

        // 通过模式得到匹配器对象
        Matcher m = p.matcher(str);

        // 遍历得到索要的
        while (m.find()) {
            // System.out.println(m.group());
            // 得到字符串 只包括 0xXX 的
            String s = m.group();

            // 截取字符串
            String num = s.substring(2, 4);

            // 解析字符串,转化成十六进制
            int x = Integer.parseInt(num, 16);

            // 存储起来
            bys[index++] = (byte) x;
        }
        // 在另外一个文本框内显示
        String s = new String(bys);
        
        this.txtChar.setText(s.trim());
    }   
做的还是比较的简单,由于GUI不是基础班学习的重点,有些东西,我不是很熟悉。比如换行,图形设计等做的很不好。也不想多花费功夫。

从一定程度上说,圆了我当年的一个想法。一个盼望




把文件内容转化成十六进制.rar

11.51 KB, 阅读权限: 10, 下载次数: 2

文本和十六进制转化






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2