从一个文件中用十六进制读取出12个字节
假如现在读出来的是 FF 01 EB 88 8A 01
取出ff 01 eb后面的六个字节
然后88与01是互相调换位置
然后把互换位置后的01 88 8A转换成十进制
但是我转换的时候因为多出这个0 所以一直报异常
直接去掉又不行 因为这后面六个字节是不定的
我该怎么做呢
假如现在读出来的是 FF 01 EB 88 8A 01
取出ff 01 eb后面的六个字节
然后88与01是互相调换位置
然后把互换位置后的01 88 8A转换成十进制
但是我转换的时候因为多出这个0 所以一直报异常
直接去掉又不行 因为这后面六个字节是不定的
我该怎么做呢
int r = 0;
r = x[0];
r += x[1] << 8;
r += x[2] << 16;
一个字节能代表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));
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开始)
}