C# 2进制到16进制的转换

 

    private static String byteHEX(byte ib) {

        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',

                'B', 'C', 'D', 'E', 'F' };

        char[] ob = new char[2];

        ob[0] = Digit[(ib >> 4) & 0X0F];

        ob[1] = Digit[ib & 0X0F];

        String s = new String(ob);

        return s;

    }

解释如下:

       char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',

                'B', 'C', 'D', 'E', 'F' };

       //定义16进制的char数组

       char[] ob = new char[2];

    //因为byte为8位0,1的数字,所以表示为16进制应该是2位char

    ob[0] = Digit[(ib >> 4) & 0X0F];

(ib >> 4) & 0x0f:二进制数ib右移4位,这样把高四位放到低四位,然后再与0f做与操作把移位后的高四位清0,得到移位后的低四位,再转换成十进制数,Digit [(b >> 4) & 0x0f]就是取出数组下标数字对应的字符,Digit [b & 0x0f]同理;

举例:

例如:ib=10010011;(ib >> 4) & 0x0f操作后,b=00001001=9,Digit [(b >> 4) & 0x0f]=’9‘;b & 0x0f=00000011=3,Digit [b & 0x0f]=’3‘;因此b对应的十六进制数是93H。转化成string就是“93”

posted on 2006-07-13 23:07  一夜分析  阅读(2273)  评论(5)    收藏  举报

导航