C++ - 浮点数转为4个字节

在C++中,可以使用位运算和移位操作将浮点数转换为4个字节。
以下是一个示例代码:

#include <iostream>  
#include <bitset>  
  
int main() {  
    float num = 3.14159f;  
    unsigned char bytes[4];  
  
    // 将浮点数转换为32位无符号整数  
    uint32_t uint_num = *(reinterpret_cast<uint32_t*>(&num));  
  
    // 将无符号整数转换为4个字节的数组  
    for (int i = 0; i < 4; i++) {  
        bytes[i] = uint_num & 0xFF;  
        uint_num >>= 8;  
    }  
  
    // 打印每个字节的值  
    for (int i = 0; i < 4; i++) {  
        std::cout << std::bitset<8>(bytes[i]) << " ";  
    }  
    std::cout << std::endl;  
  
    return 0;  
}

在上面的代码中,首先将浮点数 num 的地址强制转换为 uint32_t* 类型的指针,然后解引用该指针以获取 num 的无符号整数表示。接下来,使用位运算和移位操作将无符号整数转换为4个字节的数组 bytes。最后,打印每个字节的值。

请注意,在转换过程中,我们使用了 reinterpret_cast 来将 float 类型的指针转换为 uint32_t* 类型的指针。这是一个不太安全的操作,因为它可能会导致未定义行为。因此,在使用 reinterpret_cast 时应该非常小心,确保不会出现任何问题。

4个字节转浮点数

猜你喜欢

转载自blog.csdn.net/weixin_44697721/article/details/131722790