java怎么将txt转换为bin,将txt文件数据转成bin文件.

之前用牛逼的绘图以及分析bmp的像素文件的方法, 整理出汉字编码从: 0x4E00到0x9FA5, (维基上说是9FD5, 完了, 回头再更新吧.)

https://en.wikipedia.org/wiki/CJK_Unified_Ideographs

出来一个文件是这样事儿的:

19968 一 0800080008000800080008000800080008000800080008000800080008000000

19969 丁 0000200020002000200020042008eff720002000200020002000200000000000

19970 丂 2000200020002c002b00e8002800280028042808280428f32000200020000000

19971 七 080008000800080008000400fff3040404040404020402040204028700000000

19972 丄 0004000400040004000400040004fff700040004000400040004000400040000

19973 丅 2000200020002000200020002000efff20002000200020002000200020000000

19974 丆 20802040202020102c002300e000200020002000200020002000200020000000

19975 万 40084004400240814060cf10440044004404440844044cf34000400040000000

19976 丈 0008010801080d040114012201410180ff710102010401040108010800080000

19977 三 0002400248024802480248024802480248024802480248024802400200020000

19978 上 000400040004000400040004fff7040404040404040404040404000400040000

....

文件是1.5M

格式是, 编码+汉字+模拟出来的点阵编码, 顺便提一句, 这个编码是根据某IC厂的编码原则去写的, 并不适用于所有的点阵扫描方式.

接着, 把前面去掉, 变成了:

0800080008000800080008000800080008000800080008000800080008000000

0000200020002000200020042008eff720002000200020002000200000000000

2000200020002c002b00e8002800280028042808280428f32000200020000000

...

方便下一步处理.

那么接下来, 要将这个都是表面上16进制编码的这些文字, 变成实际上的16进制编码文件, 也就是.bin文件(这样才能烧录到flash当中去).

感谢小波借给我一个写flash的工具, 直接挂上一个8MB的flash, 把读到的空的bin文件倒腾出来, 用FlexHEX看了看, 想着能把之前的编码直接往里面拷贝, 结果人家直接当成utf8/ascii又转了一下.

挠了挠头, 先用C后来直接又用Java, 把读出来的这些String的东西, 转成了byte, BYTE!!!yes!!!这就是我要的东西!!!

public byte shortString2Hex(String shortStr) {

String baseHext = "0123456789abcdef";

char c = ‘c‘;

byte b = 0;

String masterPosStr = shortStr.substring(0, 1);

String lowPosStr = shortStr.substring(1);

// System.out.println(masterPosStr + lowPosStr);

int cValue = 16 * (baseHext.indexOf(masterPosStr)) + baseHext.indexOf(lowPosStr);

c = (char) (16 * (baseHext.indexOf(masterPosStr)) + baseHext.indexOf(lowPosStr));

b = (byte) cValue;

//System.out.println(cValue);

//System.out.println(b);

return b;

}

思路很简单啊, 就是查找这个string在基准string中的位置, 将0-f转换成0-15了, 可不就是byte了么.

然后直接把byte数组写进文件中, 文件名就以bin结尾, 然后烧录进flash, 搞定!!!

不过还没验证呢, 烧录完了, 现在试试用STM32读取.

原文:http://www.cnblogs.com/Montauk/p/5788424.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Java十六进制txt文件转换bin文件,可以按照以下步骤进行操作: 第一步,读取txt文件。使用Java文件输入流(FileInputStream)来读取txt文件中的内容,并将其保存到一个字符串中。 第二步,将十六进制字符串转换字节数组。可以使用Java的字符串方法substring和Integer类的parseInt方法,将字符串中的每两个字符解析为一个十六进制数,并将其转换字节数组。 第三步,写入字节数组到bin文件中。使用Java文件输出流(FileOutputStream)来写入字节数组到bin文件中。 下面是一个示例代码实现: ```java import java.io.*; public class HexToBinConverter { public static void main(String[] args) { String filePath = "hex.txt"; // txt文件路径 String outputFilePath = "binary.bin"; // bin文件输出路径 try { // 读取txt文件 BufferedReader br = new BufferedReader(new FileReader(filePath)); String hexString = br.readLine(); // 将十六进制字符串转换字节数组 byte[] byteArray = new byte[hexString.length() / 2]; for (int i = 0; i < hexString.length(); i += 2) { String hex = hexString.substring(i, i + 2); byteArray[i / 2] = (byte) Integer.parseInt(hex, 16); } // 写入字节数组到bin文件 FileOutputStream fos = new FileOutputStream(outputFilePath); fos.write(byteArray); // 关闭流 br.close(); fos.close(); System.out.println("转换功!"); } catch (IOException e) { e.printStackTrace(); } } } ``` 以上是一个简单的示例代码,通过读取txt文件中的十六进制字符串,并将其转换字节数组,并将字节数组写入到bin文件中。要使用该代码,请将`filePath`变量设置为输入txt文件的路径,将`outputFilePath`变量设置为输出bin文件的路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值