我有以下函数,它将一个字节数组作为浮点数据的unsigned char*
。
void expectsFloatData(unsigned char* floatData, int floatCount)
{
//Does something
memset(floatData, 0, floatCount * sizeof(float));
}
float data[4];
expectsFloatData(???, 4);
这是否证明reinterpret_cast<unsigned char*>(data);
的使用是正确的?由于我只是改变了编译器看到的变量类型,我不应该担心它会如何解释实际字符(小端与大端和其他平台特定事物)的上下文中的数据,因为浮点数的字节仍在那里,对吗?
答案 0 :(得分:3)
是的,reinterpret_cast
是适当的工具。如果函数参数为float*
或void*
(例如,void*
是memset
使用的,则能够接受和覆盖任何类型的缓冲区会更好)。