|
我之前做单片机进行通讯的时候,因为文本转化成十六进制费了不少的功夫,总是需要查看ascii码表,很早就有想法,写一段小程序,把十六进制转成二进制。现在我学习了java,虽说现在很少用到这些功能,还是想实现这个功能。 我的目的,是仿照串口调试助手中的.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) { [/align] // 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不是基础班学习的重点,有些东西,我不是很熟悉。比如换行,图形设计等做的很不好。也不想多花费功夫。
从一定程度上说,圆了我当年的一个想法。一个盼望
|