4

float与えられたビットパターン(として提供される)でを取得するための高速な方法が必要int32_tです。もちろん、コンパイラは構造全体を最適化する必要があります。単純な変換はキャストを行い、許可さreinterpret_cast<>れていません...

4

2 に答える 2

2

完全に移植可能な唯一の方法はmemcpy、バッファを経由することです:

static_assert(sizeof(float) == sizeof(int32_t), "!!");
char buf[sizeof(float)];
memcpy(buf, &i, sizeof(buf));
memcpy(&f, buf, sizeof(buf));

通常、バッファは省略できます。

static_assert(sizeof(float) == sizeof(int32_t), "!!");
memcpy(&f, &i, sizeof(float));
于 2013-02-13T14:14:11.313 に答える