作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 C++ 中,它是这样完成的:
tPacket * packet = (tPacket *)data; //data is byte[] array; tPacket is a structure
在 C# 中:
tPacket t = new tPacket();
GCHandle pin = GCHandle.Alloc(data, GCHandleType.Pinned);
t = (tPacket)Marshal.PtrToStructure(pin.AddrOfPinnedObject(), typeof(tPacket));
pin.free();
Data 是一个字节数组,在通过 TCP 接收数据包后用作接收缓冲区。该代码将数据放入 tPacket(一个结构)的实例中,以便我稍后可以访问该结构。
Delphi 中是如何实现的?
最佳答案
您还可以使用absolute关键字强制两个结构共享相同的内存地址:
var
Data: array[1..SizeOf(TMyStruct)] of byte;
s : TMyStruct absolute Data;
写入 S 的任何数据也可以作为数据使用,而无需执行移动或指针转换。
关于delphi - 如何将 byte[] 分配给记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878921/
我是一名优秀的程序员,十分优秀!