读书人

请问 一个结构体怎样转换成字节数组

发布时间: 2012-02-29 16:44:10 作者: rapoo

请教 一个结构体怎样转换成字节数组

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()这些函数不是很多的吗 直接用瞅瞅

读书人网 >C++

热点推荐