我有一个void指针,想要从中访问元素。我如何将void *转换为无符号字节指针,以便我可以访问其元素(我知道它实际上是无符号字节)。 感谢
使用C ++
答案 0 :(得分:6)
您需要将其转换为您用于“无符号字节”的相应类型。一旦它被适当地转换,你可以像访问数组一样访问它(访问元素)。
unsigned char* bytePointer = static_cast<unsigned char*>(originalVoidPointer);
unsigned char elementFive = bytePointer[5];
答案 1 :(得分:6)
// Assuming you have a void* declared:
void* p;
// and it's initialized to point to a valid object (array of bytes)
// somewhere here...
// ...
// You can convert it to a pointer to unsigned char:
unsigned char* bytes = static_cast<unsigned char*>(p);
// ... and access the bytes using []
unsigned char x = bytes[0];
当然,您使用的字节偏移量必须在void*
实际指向的对象大小范围内。
答案 2 :(得分:4)
index[reinterpret_cast<unsigned char*>(voidPointer)]
答案 3 :(得分:1)
你的类型转换。如果它是C,那么你应该使用类似的东西:
((unsigned char *) void_ptr)[index];
如果是C ++,那么你根本就不应该使用void指针。