请教 一个结构体怎样转换成字节数组
void getTapiString(CString& result, void *ptr, DWORD Size, DWORD Offset)
{
if (Size > 0)
{
char *buffer = result.GetBufferSetLength(Size + 1);
memcpy(buffer, &((BYTE *) ptr)[Offset], Size);
buffer[Size] = 0;
result.ReleaseBuffer();
}
else
result.Empty();
}
其中ptr是一个结构体指针
不理解这句话 &((BYTE *) ptr)[Offset]
[解决办法]
&((BYTE *) ptr)[Offset]
就是相当于
(BYTE*)ptr+offset
offset意思就是偏移offset个字节
[解决办法]
无论他是什么内存形式保存,到最后反正是放内存里,
一个结构指针他也是地址,你强行改成字节形式,他也还是地址,
所以强制类型转换只是语法上的需要,实质上指针就是地址,
象上面的兄弟说的,再加个[offset]就是这个地址的偏移地址,
C程序员应该要对偏移这个概念根深蒂固呀
至于delphi转换嘛,pascal语言学过 忘了,差不多的吧,delphi里不是
强制类型转换很容易的嘛. 象strtoint()这些函数不是很多的吗 直接用瞅瞅