gpt4 book ai didi

C#命令获取结构偏移量?

转载 作者:太空狗 更新时间:2023-10-29 18:01:59 26 4
gpt4 key购买 nike

假设我有一个像这样的 C# 结构:

[StructLayout(LayoutKind.Explicit)]
struct IMAGE_DOS_HEADER {
[FieldOffset(60)] public int e_lfanew;
}

现在假设我从文件中读取数据,如下所示:

byte[] data = new byte[4096];
FileStream f = new FileInfo(filename).Open(FileMode.Open, FileAccess.Read);
int n = f.Read(data, 0, 4096);

现在我想测试 n 以确保我已经读取了足够的字节来获取 e_lfanew 的值。有什么方法可以在不重新输入的情况下获得值 60(FieldOffset)?我正在寻找这样的东西:

if (n >= offsetof(IMAGE_DOS_HEADER.e_lfanew) + sizeof(int)) {
...
}

有这样的命令吗?在我的实际代码中,我必须进行其中的几个测试,并且通过将结构中的先前字段相加或从 FieldOffset 属性中复制值来手动输入数字似乎很乏味且容易出错。有没有更好的办法?

最佳答案

使用 Marshal.OffsetOf:

Marshal.OffsetOf(typeof(IMAGE_DOS_HEADER), "e_lfanew")

关于C#命令获取结构偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2120367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com