將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讀取.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM