我正在使用二进制文件结构。读取数据的代码示例是C语言的,我需要在Delphi中读取。我赶紧补充一下我没有C编程经验。
鉴于以下
typedef struct {
uchar ID, DataSource;
ushort ChecksumOffset;
uchar Spare, NDataTypes;
ushort Offset [256];
} HeaderType;
...
typedef struct {
ushort ID;
...
ushort DistanceToBin1Middle,TransmitLength;
} FixLeaderType;
...
HeaderType *HdrPtr;
FixLeaderType *FLdrPtr;
unsigned char RcvBuff[8192];
void DecodeBBensemble( void )
{
unsigned short i, *IDptr, ID;
FLdrPtr = (FixLeaderType *)&RcvBuff [ HdrPtr->Offset[0] ];
if (FLdrPtr->NBins > 128)
FLdrPtr->NBins = 32;
...
我难以理解的一点是:
FLdrPtr = (FixLeaderType *)&RcvBuff [ HdrPtr->Offset[0] ];
据我了解,[ HdrPtr->Offset[0] ];
会从 HdrPtr 指向的 HeaderType 结构返回第一个 Offset 数组项的值吗?那么等价于HdrPtr^.Offset[0]
?
那么&RcvBuff [ HdrPtr->Offset[0] ];
应该返回包含索引的 RcvBuff 数组项的值的内存地址,所以相当于@RecBuff[HdrPtr^.Offset[0]]
?
然后我迷路了(FixLeaderType *)..
。有人可以帮助解释 FldrPtr 所引用的确切内容吗?