我有一个指向对象的地址或指针。
如何将地址转换为unsigned char数组?我使用它作为使用套接字传输的参考。感谢。
答案 0 :(得分:2)
如果类型完全不相关(显然它们是相似的),您可能需要reinterpret_cast
。
答案 1 :(得分:2)
Object * pObject = ...;
unsigned char * pSz = reinterpret_cast<unsigned char *>(pObject);
// thru pSz you can see your object blindly as a pointer of unsigned char
// (the first char is pointed)
//and only if you know the size of your object (sizeObject) you can do this:
unsigned char pArray[sizeObject] = pSz;
要非常小心如果你曾经使用过多态,那么继承的对象可能比母类Object具有完全不同的大小;
答案 2 :(得分:1)
void *your_pointer;
unsigned char *new_pointer = (unsigned char*) your_pointer;
既然你的问题被标记为C ++,我是否也建议你不要转换指针,而是尝试使用一些高级库? Qt为套接字提供了一个很好的框架,并且也可能提升。
答案 3 :(得分:1)
unsigned char *array = reinterpret_cast<unsigned char*>(my_obj);
但是,您不应仅通过将对象视为字节数组来发送对象。那里有一些数据,比如通过网络发送后无用的方法地址。
答案 4 :(得分:-2)
void* ptr; // Could be any type of course
ptr = something();
int n = sizeof(ptr);
unsigned char arr = new unsigned char[n];
memcpy((void*)arr[0], (void*)ptr, n);
// Remember to delete [] the array