内容简介:翻译自:https://stackoverflow.com/questions/2120367/c-sharp-command-to-get-struct-offset
假设我有一个像这样的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")
翻译自:https://stackoverflow.com/questions/2120367/c-sharp-command-to-get-struct-offset
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
疯狂Java讲义(第4版)
李刚 / 电子工业出版社 / 2018-1 / 109
《疯狂Java讲义(第4版)》是《疯狂Java讲义》的第4版,第4版保持了前3版系统、全面、讲解浅显、细致的特性,全面新增介绍了Java 9的新特性。 《疯狂Java讲义(第4版)》深入介绍了Java编程的相关方面,《疯狂Java讲义(第4版)》内容覆盖了Java的基本语法结构、Java的面向对象特征、Java集合框架体系、Java泛型、异常处理、Java GUI编程、JDBC数据库编程、J......一起来看看 《疯狂Java讲义(第4版)》 这本书的介绍吧!