将浮点数*或其他指针转换为无符号字符*

Converting a float* or other pointer to unsigned char*

本文关键字:无符号 转换 字符 其他 浮点数 指针      更新时间:2023-10-16

我有以下函数,它将字节数组作为浮点数据的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);是合理的?
由于我只是更改编译器看到的变量类型,因此我不必担心它将如何在实际字符的上下文中解释数据(小端序与大端序以及其他平台特定的东西(,因为浮点数的字节仍然存在,对吧?

是的,reinterpret_cast是合适的工具。 如果函数参数是float*void*的(例如,memset使用的参数void*,以便能够接受和覆盖任何类型的缓冲区(,那就更好了。