如何将指针地址转换为unsigned char数组?

时间:2010-12-16 12:26:30

标签: c++ c sockets bytearray

我有一个指向对象的地址或指针。

如何将地址转换为unsigned char数组?我使用它作为使用套接字传输的参考。感谢。

5 个答案:

答案 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