16進制文件工具類

package com.dwxt.cdms.util;

import java.io.*;


public class HexUtil {
    private static final String EXPORT_PATH = "D:/app/";

    public static void main(String[] args) {
        String[] s = {"a6", "6b", "67", "6b", "39", "6b", "15", "6b", "17", "6b", "16", "6b", "09", "6b", "e5", "6a", "b5", "6a", "60", "6a"};
        hexToEcg("","11.ecg");
    }
    /**
     * 文件轉成十六進制
     */
    public void ecgToHex() {
        try {
            StringBuffer sb = new StringBuffer();
            FileInputStream fis = new FileInputStream("C:/android/part_ytcorridor-debug.ecg");
            java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();

            byte[] buffer = new byte[1024];
            int read = 1024;
            int readSize = 1024;
            while (read == readSize) {
                read = fis.read(buffer, 0, readSize);
                bos.write(buffer, 0, read);
            }
            // 得到圖片的字節數組
            System.out.println(bos.toString());

            byte[] result = bos.toByteArray();
            // 字節數組轉成十六進制
            String str = byte2HexStr(result);
            /*
             * 將十六進制串保存到txt文件中
             */
            PrintWriter pw = new PrintWriter(new FileWriter("C:/android/ecg1.txt"));
            pw.println(str);
            pw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 十六進制轉成文件
     *
     * @param hex
     * @param filePath
     */
    public static void hexToEcg(String hex, String filePath) {
        StringBuilder sb = new StringBuilder();
        sb.append(hex);
        saveToEcgFile(sb.toString().toUpperCase(), EXPORT_PATH + filePath);
    }

    public static void saveToEcgFile(String src, String output) {
        if (src == null || src.length() == 0) {
            return;
        }
        try {
            FileOutputStream out = new FileOutputStream(new File(output));
            byte[] bytes = src.getBytes();
            for (int i = 0; i < bytes.length; i += 2) {
                out.write(charToInt(bytes[i]) * 16 + charToInt(bytes[i + 1]));
            }
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static int charToInt(byte ch) {
        int val = 0;
        if (ch >= 0x30 && ch <= 0x39) {
            val = ch - 0x30;
        } else if (ch >= 0x41 && ch <= 0x46) {
            val = ch - 0x41 + 10;
        }
        return val;
    }

    /*
     * 實現字節數組向十六進制的轉換方法一
     */
    public static String byte2HexStr(byte[] b) {
        String hs = "";
        String stmp = "";

        for (int n = 0; n < b.length; n++) {
            stmp = (Integer.toHexString(b[n] & 0XFF));
            if (stmp.length() == 1)
                hs = hs + "0" + stmp;
            else
                hs = hs + stmp;
        }
        return hs.toUpperCase();
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章