以下是一个示例代码,展示了使用BinaryReader和byte[]+shifts方法来读取二进制数据的对比:
使用BinaryReader:
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "binaryFile.bin";
// 使用BinaryReader读取二进制文件
using (BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open)))
{
int intValue = reader.ReadInt32();
Console.WriteLine("Read int value: " + intValue);
byte[] byteArray = reader.ReadBytes(4);
Console.WriteLine("Read byte array: " + BitConverter.ToString(byteArray));
float floatValue = reader.ReadSingle();
Console.WriteLine("Read float value: " + floatValue);
}
}
}
使用byte[]+shifts方法:
using System;
class Program
{
static void Main()
{
string filePath = "binaryFile.bin";
// 使用byte[]+shifts方法读取二进制文件
byte[] buffer = new byte[12];
using (var stream = System.IO.File.OpenRead(filePath))
{
// 读取int值
stream.Read(buffer, 0, 4);
int intValue = BitConverter.ToInt32(buffer, 0);
Console.WriteLine("Read int value: " + intValue);
// 读取byte数组
stream.Read(buffer, 0, 4);
byte[] byteArray = new byte[4];
Buffer.BlockCopy(buffer, 0, byteArray, 0, 4);
Console.WriteLine("Read byte array: " + BitConverter.ToString(byteArray));
// 读取float值
stream.Read(buffer, 0, 4);
float floatValue = BitConverter.ToSingle(buffer, 0);
Console.WriteLine("Read float value: " + floatValue);
}
}
}
这两种方法都可以用来读取二进制数据,BinaryReader提供了更高级的功能和易用性,而byte[]+shifts方法需要手动进行字节顺序的转换和数据类型的解析。选择哪种方法取决于具体的需求和个人偏好。