在C#中,可以使用BinaryReader
类来将字节读入结构。BinaryReader
类提供了一系列方法,可以从流中读取不同类型的数据,包括字节、字符、字符串、整数、浮点数等。
以下是一个示例代码,演示如何使用BinaryReader
类将字节读入结构:
using System;
using System.IO;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
struct MyStruct
{
public int Field1;
public short Field2;
public byte Field3;
}
class Program
{
static void Main(string[] args)
{
byte[] bytes = new byte[] { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC };
MemoryStream ms = new MemoryStream(bytes);
BinaryReader br = new BinaryReader(ms);
MyStruct myStruct = new MyStruct();
myStruct.Field1 = br.ReadInt32();
myStruct.Field2 = br.ReadInt16();
myStruct.Field3 = br.ReadByte();
Console.WriteLine($"Field1: {myStruct.Field1}");
Console.WriteLine($"Field2: {myStruct.Field2}");
Console.WriteLine($"Field3: {myStruct.Field3}");
br.Close();
ms.Close();
}
}
在上面的示例代码中,我们首先定义了一个名为MyStruct
的结构,该结构包含三个字段:Field1
、Field2
和Field3
。然后,我们创建了一个MemoryStream
对象,并将一些字节写入该对象。接下来,我们使用BinaryReader
类从MemoryStream
对象中读取字节,并将这些字节读入MyStruct
结构。最后,我们将MyStruct
结构中的字段打印到控制台上。
需要注意的是,BinaryReader
类的ReadInt32
、ReadInt16
和ReadByte
方法分别读取32位整数、16位整数和8位整数。如果需要读取其他类型的数据,可以使用BinaryReader
类中的其他方法。
领取专属 10元无门槛券
手把手带您无忧上云