从一个文件中用十六进制读取出12个字节
假如现在读出来的是 FF 01 EB 88 8A 01
取出ff 01 eb后面的六个字节
然后88与01是互相调换位置
然后把互换位置后的01 88 8A转换成十进制
但是我转换的时候因为多出这个0  所以一直报异常
直接去掉又不行 因为这后面六个字节是不定的
我该怎么做呢

解决方案 »

  1.   

    单独转换的话 Convert.ToInt32() 就可以直接在进制之间转换,可以参考一下MSDN中的详细信息
      

  2.   

                byte[] x = new byte[3] { 0x88, 0x8a, 0x01 };
                int r = 0;
                r = x[0];
                r += x[1] << 8;
                r += x[2] << 16;
      

  3.   

    楼主还没有明白什么是一个字节一个字节(byte)就是8个比特(bit)
    一个字节能代表256个变化(2的8次方),换成十六进制是00到FF“FF 01 EB 88 8A 01”这是明明是6个字节一个int占4个字节,只要填写这四个字节就能获得其数值
    “88 8A 01 00”参考如下代码:
    byte[] buffer = new byte[4];
    buffer[0] = 0x88;
    buffer[1] = 0x8A;
    buffer[2] = 0x01;
    Console.WriteLine(BitConverter.ToInt32(buffer, 0));
      

  4.   

    完整一点就这样:
    using (System.IO.FileStream fs = new System.IO.FileStream(@"c:\temp\temp.dat",
        System.IO.FileMode.Open, System.IO.FileAccess.Read))
    {
        byte[] buffer = new byte[7]; // 分配的时候多一个字节,保证转换int的时候是4个字节
        fs.Read(buffer, 0, 6); // 读取6个字节
        Console.WriteLine(BitConverter.ToInt32(buffer, 3)); // 从第4个字节开始读(index从0开始)
    }