之前做单片机开发的时候,总是遇到进制之间的转化,尤其是遇到对寄存器进行操作,和通讯问题的时候。那时候真的用的特别的多记忆中最深的是“0x0D”,“0x0A”(回车,换行)。
还
有,我当时不懂 java 语言,当然也无法实现进制的转化了。学习java一段时间,尤其是学过 IO 流就想实现输入一句话,
我把它转化成十六进制,存到文件中
这是陪伴我多年的串口调试助手的界面,上面有个功能是 hex显示,存储到文件中。我就是想模拟这个功能
说说我程序,把想要转化的文件写到 1.txt 文档中,程序就会读取这个文件,然后进行转化,转化完成后,存储到 2.txt 这个文件中,
只需要打开 2.txt 这个文件,就可以看到 1.txt 所有内容 hex 显示。每一个hex 值之间,用一个空格隔开
下面是代码
[AppleScript] 纯文本查看 复制代码 package cn.itcast.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 把文件的内容转换成十六进制 代码
*
* 1, 使用字节流对象,读取文件的内容
* 2,获取没每一个字节
* 3,把每一个字节转化成十六进制数字
*
*
* */
public class ToHex {
public static void main(String[] args) throws IOException {
// 创建字节流对象
File file = new File("1.txt");
FileInputStream fis = new FileInputStream(file);
FileOutputStream fos =new FileOutputStream("2.txt");
// 遍历文件中的内容
/*
* 转换成十六进制 是使用是 Integer.toHexString()方法
*/
int bys = 0;
while ((bys = fis.read()) != -1) {
// Integer i = new Integer(bys);
// i.toHexString(i)
if (bys < 0x10) {
// System.out.print("0x0" + Integer.toHexString(bys) + " ");
fos.write(("0x0" + Integer.toHexString(bys) + " ").getBytes());
} else {
// System.out.print("0x" + Integer.toHexString(bys) + " ");
fos.write(("0x" + Integer.toHexString(bys) + " ").getBytes());
}
}
// 释放资源
fis.close();
fos.close();
}
}
程序不是很复杂。当年想让朋友帮我写这样一段程序,费了很多的口舌,最后他还是以忙为借口,没有帮我写。
不管有用没有用,都想实现这个功能,哪怕只是练习一下而已
|