首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-29 
请教 一个结构体怎样转换成字节数组 voidgetTapiString(CString&result,void*ptr,DWORDSize,DWORDOffset){

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

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

热点排行