如何将二进制数组转换为已知类?
本质上我有一个字节数据数组,如下所示:
unsigned char * buff[sizeof(MyClass)];
我对每个字节使用unsigned char
,因为我假设它的长度为 1 个字节。
如何将此数组转换为我所知道的数据表示的内容?我已经从 MyClass 的内存中获取了数据,并将其放入此缓冲区中 - 现在我需要将其转换回 MyClass
。
我见过reinterpret_cast
,但我不确定它是否适用于此。
最佳答案
unsigned char* buff[sizeof(MyClass)]
是 unsigned char*
的数组,这可能是 4
或8
比你预期的大几倍。 (分别是 32 位和 64 位平台,但有些架构甚至具有不同的指针大小 - 挑剔保护)
回答问题的选角部分,reinterpret_cast<T*>(buff)
会将 block 处理为 T*
.
关于C++ 将二进制数组转换为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20914390/