//比如这样是两位数字的数组
            ushort a = 0x1234;
            byte[] by = new byte[3];
            by[0] = (byte)((0xff00 & a)>>8);
            by[1] = (byte)((0xff & a));
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine(by[i]);
            }
            //输出等于:18  52   这是正确的其中的0xff00 & a 是什么意思???
且当long a 时真的不知道怎么转....如下:
//比如这样是4位数字的数组
            long a = 0x921225;     
            byte[] by = new byte[4];
            by[0] = (byte)((0xff00 & a)>>8);
            by[1] = (byte)((0xff & a));
            //by[2] = (byte)(a);   //不知道啥写????
            //by[3] = (byte)(a);   //0..>_<..0
            for (int i = 0; i < by.Length; i++)
            {
                Console.WriteLine(by[i]);
            }求解大侠们...................

解决方案 »

  1.   

    0xff00 & a 
    就是0xff00跟a进行与运算long是64位,可以进行移位操作,然后转成byte
      

  2.   

    long 不是 64么,byte 不是8 么,那么数组长度不是应该为8么其实和0xff按位与有什么意义么?
    long按8位分别存入byte数组而已嘛
      

  3.   

    转换一下就行了,这里只给你讲第一个例子(0xff00 & a)>>8 a=0x1234       //二进制为 0001001000110100
    0xff00        //二进制为  1111111100000000
    0xff00 & a 与运算 //结果  0001001000000000
    然后(0xff00 & a)>>8 右移8个位 //结果为  0000000000010010
    转换为int(十进制),1*2^4+0*2^3+0*2^2+1*2^1+0*2^0=18