将 C 数据结构和 typedef 映射到 .Net
我正在尝试编写一个用于与网络协议进行通信的接口,但 IEEE 文档在位级别描述了该协议,其中信息分割为单个字节。
最佳方法是什么?
typedef struct {
Nibble transportSpecific;
Enumeration4 messageType;
UInteger4 versionPTP;
UInteger16 messageLength;
UInteger8 domainNumber;
Octet flagField[2];
Integer64 correctionfield;
PortIdentity sourcePortIdentity;
UInteger16 sequenceId;
UInteger8 controlField;
Integer8 logMessageInterval;
} MsgHeader;
处理 C typedef(例如将兼容层移植到 .Net 时)的
I'm trying to write an interface for communicating with a network protocol, but the IEEE document describes the protocol at the bit level with information split accross a single byte.
What would be the best way to go about handling a C typedef such as
typedef struct {
Nibble transportSpecific;
Enumeration4 messageType;
UInteger4 versionPTP;
UInteger16 messageLength;
UInteger8 domainNumber;
Octet flagField[2];
Integer64 correctionfield;
PortIdentity sourcePortIdentity;
UInteger16 sequenceId;
UInteger8 controlField;
Integer8 logMessageInterval;
} MsgHeader;
when porting a compatibility layer to .Net?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尽管无法表示小于字节的值,但 FieldOffsetAttribute 可能对您有帮助。
我将使用一个字节来表示两个值以实现互操作目的,然后通过属性 getter 访问该值。
FieldOffsetAttribute may be of help to you, although there is no way to represent values smaller than a byte.
I would use a byte to represent the two values for interop purposes, and then access the value via property getters.