Android 16进制转换工具类

作者: 淡淡_孩子气 | 来源:发表于2019-02-16 10:57 被阅读7次
/**
 * author:wiki on 2018/12/12
 * email:zhengweiqunemail@qq.com
 */
public class ConvertUtil {

    /**
     * 16进制字符串转化为字母ASCALL码
     *
     * @param hex 要转化的16进制数,用空格隔开
     *            如:53 68 61 64 6f 77
     * @return ASCALL码
     */
    public static String convertHexToAsCall(String hex) {
        StringBuilder sb = new StringBuilder();
        String[] split = hex.split(" ");
        for (String str : split) {
            int i = Integer.parseInt(str, 16);
            if (i < 0x20 || i == 0x7F) {//过滤特殊字符
                continue;
            }
            sb.append((char) i);
        }
        return sb.toString();
    }

    /**
     * 16进制数组转String
     *
     * @param data byte数组
     * @return string
     */
    public static String formatHex2String(byte[] data) {
        final StringBuilder stringBuilder = new StringBuilder(data.length);
        for (byte byteChar : data)
            stringBuilder.append(String.format("%02X ", byteChar));
        return stringBuilder.toString();
    }

    /**
     * 16进制字符串转换为Byte值
     *
     * @param src Byte字符串,每个Byte之间没有分隔符,eg:616C6B
     * @return byte[]
     */
    public static byte[] hexStr2Bytes(String src) {
        int m = 0, n = 0;
        int l = src.length() / 2;
        System.out.println(l);
        byte[] ret = new byte[l];
        for (int i = 0; i < l; i++) {
            m = i * 2 + 1;
            n = m + 1;
            ret[i] = Byte.decode("0x" + src.substring(i * 2, m) + src.substring(m, n));
        }
        return ret;
    }

    /**
     * 字符串转换成十六进制字符串
     *
     * @param str 待转换的ASCII字符串
     * @return String 每个Byte之间没有分隔,如: [616C6B]
     */
    public static String str2HexStr(String str) {

        char[] chars = "0123456789ABCDEF".toCharArray();
        StringBuilder sb = new StringBuilder("");
        byte[] bs = str.getBytes();
        int bit;

        for (int i = 0; i < bs.length; i++) {
            bit = (bs[i] & 0x0f0) >> 4;
            sb.append(chars[bit]);
            bit = bs[i] & 0x0f;
            sb.append(chars[bit]);
//            sb.append(' ');
        }
        return sb.toString().trim();
    }

}

相关文章

网友评论

    本文标题:Android 16进制转换工具类

    本文链接:https://www.haomeiwen.com/subject/oadbeqtx.html