格式转换

一、string转字符数组

String  value = “23”; 

value.getBytes();

utf-8 GBK编码都是  50  51; 具体可以编码表

其中0为48;

ab 为 97 98;

你为E4BDA0;

二、字符数组转16进制字符串; 用于网络、socket等传输

50  51  -> "3233"   即转为16进制

ByteUtils.bytes2HexString

三、反转

new String(ByteUtils.hexString2Bytes(ByteUtils.bytes2HexString(value.getBytes())))

四、BCD码(一半用于数字)

为了进一步减少传输长度,使用BCD码; 可以减少一半,但是数据长度需要偶数位,否则前补0;

 public static byte[] byteToBCD(byte[] bcd) {
        String asc = new String(bcd);
        int len = asc.length();
        int mod = len % 2;
        if (mod != 0) {
            asc = "0" + asc;
            len = asc.length();
        }

        byte[] abt = new byte[len];
        if (len >= 2) {
            len /= 2;
        }

        byte[] bbt = new byte[len];
        abt = asc.getBytes();

        for(int p = 0; p < asc.length() / 2; ++p) {
            int j;
            if (abt[2 * p] >= 97 && abt[2 * p] <= 122) {
                j = abt[2 * p] - 97 + 10;
            } else if (abt[2 * p] >= 65 && abt[2 * p] <= 90) {
                j = abt[2 * p] - 65 + 10;
            } else {
                j = abt[2 * p] - 48;
            }

            int k;
            if (abt[2 * p + 1] >= 97 && abt[2 * p + 1] <= 122) {
                k = abt[2 * p + 1] - 97 + 10;
            } else if (abt[2 * p + 1] >= 65 && abt[2 * p + 1] <= 90) {
                k = abt[2 * p + 1] - 65 + 10;
            } else {
                k = abt[2 * p + 1] - 48;
            }

            int a = (j << 4) + k;
            byte b = (byte)a;
            bbt[p] = b;
        }

        return bbt;
    }

 

 

 

 

你可能感兴趣的:(Android基础)