请教个C#char和int的转换问题
C++下这样的实现:char buf[4] ;从串口接收了四个字节,0x55,0xaa,0x55,0xbb,将这四个字节放入接收buf(char型)后,现在需要提取出来判断是否为帧头0x55aa55bb,即需要从char型数组里面提取四个字节转换为一个整形数据,在C++下 直接int temp =*(int*)buf即可,请问在C#下怎么实现?谢谢大家
还有比如我不是取开头的四个字节,而是中间某个字节开始的四个字节呢? c# c++
[解决办法]
BitConverter .ToInt32 (new byte [],int startIndex);
[解决办法]
int sum=0;
int startIndex=0;
for(int i=0;i<4;i++)
{
sum += ( ch[ startIndex+i ] * 256^((4-i) );//这步跟9楼不一样
}
string result=string.Empty;
byte[] arr = { 1, 2, 3, 4, 5, 6, 7, 8 };
//method 1;
int intVal = 0;
int startIndex = 1;
for (int i = 0; i < 4; i++)
{
intVal += ( arr[startIndex + i] * (int)Math.Pow(256,i));
}
result += intVal.ToString() + "; ";
//method 2;
intVal = 0;
intVal= BitConverter.ToInt32(arr, 1);
result += intVal.ToString() + "; ";
//method 3;
intVal = 0;
using (MemoryStream ms = new MemoryStream(arr))
{
ms.Seek(1, SeekOrigin.Begin);
using (BinaryReader br = new BinaryReader(ms))
{
intVal = br.ReadInt32();
}
}
result += intVal.ToString() + "; ";
//以上3种方法得到的result值相同;