BCD,HEX,ASCII编码

Hex 全称 是Intel HEX。Hex文件是由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和/或常量数据的十六进制编码数字组成
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。


下面通过举例来分别说明,两种不同编码的区别
1,字符串“1234”表示ACSII码每个字符由一个字节表示, 为0x31 0x32 0x33 0x34
2,HEX字符串的意思是将0x去掉变成字符串:31323334
3,如果字符串“1234”为HEX字符串则表为两个字节0x12,0x34 根据与ASCII对应表中对应的字符为0x12:DC2 (device control 2)设备控制2 0x34:4
4,在java中如果字符串取ASCII码时为String.getbytes() 或者String.getbytes(编码名称),在编译器中以16进制显示就可以显示为acsii字符串;


HEXTOString 的方法如下:
public static String bytesToHex(byte[] bs) {
        char[] cs = new char[bs.length * 2];
        int io = 0;
        byte[] var3 = bs;
        int var4 = bs.length;


        for(int var5 = 0; var5 < var4; ++var5) {
            byte n = var3[var5];
            cs[io++] = CS[n >> 4 & 15];
            cs[io++] = CS[n >> 0 & 15];
        }


        return new String(cs);
    }


HEX String 转byte[]


public static byte[] hexToBytes(String s) {
        s = s.toUpperCase();
        int len = s.length() / 2;
        int ii = 0;
        byte[] bs = new byte[len];


        for(int i = 0; i < len; ++i) {
            char c = s.charAt(ii++);
            int h;
            if(c <= 57) {
                h = c - 48;
            } else {
                h = c - 65 + 10;
            }


            h <<= 4;
            c = s.charAt(ii++);
            if(c <= 57) {
                h |= c - 48;
            } else {
                h |= c - 65 + 10;
            }


            bs[i] = (byte)h;
        }


        return bs;
    }


你可能感兴趣的:(Android)