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

© L10052108 中级黑马   /  2016-11-6 18:22  /  869 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

之前做单片机开发的时候,总是遇到进制之间的转化,尤其是遇到对寄存器进行操作,和通讯问题的时候。那时候真的用的特别的多记忆中最深的是“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();
	}
}

程序不是很复杂。当年想让朋友帮我写这样一段程序,费了很多的口舌,最后他还是以忙为借口,没有帮我写。
不管有用没有用,都想实现这个功能,哪怕只是练习一下而已



您需要登录后才可以回帖 登录 | 加入黑马