C#字节数组与值类型变量的互相转换,以及注意事项
C#将值类型与字节数组互相转换,主要用到BitConverter类。示例代码如下:
- byte[] bytes = { 25, 0, 0, 1, 0, 0, 0, 1 };
- int numInt = BitConverter.ToInt32(bytes, 0);
- short numShort = BitConverter.ToInt16(bytes, 0);
- long numLong = BitConverter.ToInt64(bytes, 0);
- Console.WriteLine("int: {0}", numInt);
- Console.WriteLine("short: " + numShort);
- Console.WriteLine("long: " + numLong);
- bytes = BitConverter.GetBytes(numLong);
转换时需要注意字节数组的长度,该长度必须大于等于要转换的数值类型变量所占的字节数,如:要将字节数组转换为int,则该数组必须至少包含有4个字节项,要转换为long,则该数组必须至少包含8个字节项。BitConverter执行数值转换时,若转换为int型,则会从指定的起始索引开始,从数组中取4个字节出来转换为int,若转换为long型,则会从指定的起始索引开始,从数组中取8个字节出来转换为long。若数组的项数不足,则在用BitConverter.ToInt时,会引发System.ArgumentException,报“目标数组长度不足”的异常。
C#将值类型变量转换为字节数组时,只需调用BitConverter.GetBytes()方法即可。