我有以下情况:
struct object1 {
bool a:1;
bool b:1;
uint8_t c:2;
bool d:1;
abc e:3;
uint16_t header;
uint8_t footer;
uint8_t mid[4];
}
我可能不知道语法,但在 C# 中玩位并不像 C++ 那样简单。我已经使用 BitArray 和 BitConverter 类来制作填充数据的方法,但我遇到了问题:
object1 * rqr = (object1 *) &Msg.Data[2];
基本上,他们将对象转换为字节数组。我所做的每一次搜索都在尖叫序列化,但要真正转换上面的行,我不能有任何额外的元数据或任何东西。
我真的很想创建一个指向内存位置的指针并将该位置“投射”到所述对象。这可能吗?如果没有,是否有解决此问题的方法?我无法想象这个级别的位操作被完全排除在外。在假设之前,我会默认我只是不知道。
编辑:: 我知道 C# 不允许指向管理类型的指针。我要问的是是否有办法说:
Byte[] ayData = new Byte[8];
ObjectOfSize8 nObject = (ObjectOfSize8)ayData;
我知道上面的方法行不通,但是,如果你足够聪明地理解对象的内存大小,语言中是否有允许数据转换的东西?