a~d分别代表一个数的32位二进制的每八位分段。举个例子:        byte a =1;   对应的二进制值为—>00000001
        byte b =64;   对应的二进制值为—>01000000
        byte c = 128; 对应的二进制值为—>10000000
        byte d = 16;  对应的二进制值为—>00010000那么,我想要的那个数为—>00000001 01000000 10000000 00010000
转化成整数为—>21004304代码应该怎样写呢? 怎样才能实现a b c d 这四个数的二进制拼接得到整数呢?(代码不会 写 )希望高手指点,万分感激!!!!

解决方案 »

  1.   

    21004304跟abcd有啥关系?
    楼主应该把逻辑规律说一下
      

  2.   

    val为Byte[4]
    UInt32 result = Convert.ToUInt32((val[0] << 24) + (val[1] << 16) + (val[2] << 8) + val[3]);
    把val转成无符号整数
      

  3.   

    从左到右 一共32位 分成4断  a | b | c | d
      

  4.   


                    int[] bytes = new int[] {1,64,128,16 };
    int result=0;
    for (int i = bytes.Length-1; i >-1 ; i--)
    { result += bytes[i] << ((bytes.Length-1-i) * 8);
    }
    Console.WriteLine("result:"+result);
      

  5.   

    在内存中,32位的数值型数据是这样存放的,在组合的时候移位就可以组成一个数值了。UInt32 result = Convert.ToUInt32((a << 24) + (b << 16) + (c << 8) + d);
      

  6.   

    int转换成byte数组原理例如int 300,因为int占4字节,所以byte数组长度为4,先将300转换成二进制:00000000 00000000 00000001 00101100,然后将每个字节转换成十进制由低到高存入byte数组中,所以最后结果是44 1 0 0 ,byte[0]=44 byte[1]=1 byte[2]=0 byte[3]=0 
    -----------------------
    上面的概念你好像不清楚,所以我贴给你看.http://topic.csdn.net/u/20100511/14/db02b2f3-fe78-48f0-b09e-febc8f29d963.html
    这个帖子原理和代码都有我不赘述了.
      

  7.   


                byte[] abc = new byte[4];
                abc[0] = 1;
                abc[1] = 64;
                abc[2] = 128;
                abc[3] = 16;
                Int32 result = Convert.ToInt32((abc[0] << 24) + (abc[1] << 16) + (abc[2] << 8) + abc[3]);