在不更改基础位的情况下强制转换值

  • 本文关键字:情况下 转换 c++ c++20
  • 更新时间 :
  • 英文 :


不久前,我在谷歌上搜索了这个,一无所获,不得不求助于投射指针,这有点笨拙:

constexpr float value = 205.5f;
const auto float_as_unsigned =*((uint32_t*)&value);

我刚刚意识到你可以通过工会做到这一点:

union bit_cast32
{
float f32;
uint32_t u32;
int32_t i32;
};
const auto float_as_unsigned2 = bit_cast32( 205.5f ).u32;

有更好的方法吗?

是c++20的新功能,有std::bit_cast

constexpr auto float_as_unsigned3 = std::bit_cast<uint32_t>(205.5f);

最新更新