0

我正在尝试将浮点数转换为二进制字符串。我注意到很多教程都在将浮点数转换为所谓的“二进制浮点数”。例如数字8.5是二进制浮点数1000.1

这是通过使用 modf 函数将尾数除以将整数部分和小数部分作为两个单独的整数来找到的。然后,您使用位操作或仅使用除以 2(对于十进制整数部分)打印这两个整数的二进制表示。

1000.1不是我想要的。我想要实际的二进制字符串表示。

01000001 00001000 00000000 00000000

我不能保证当使用 modf 函数时,我的浮点数将能够转换为两个整数。

我目前有将整数转换为二进制字符串的函数。我想知道花车是否存在这样的东西。如果是这样,请指出我正确的方向。谢谢。

4

1 回答 1

3

获取浮点数的地址,将其转换为int*(或其他适当的具有相同的整数类型sizeof),然后使用您现有的函数:

// assert(sizeof(float) == sizeof(int))

float f = 8.5;
convert_int_to_binary_string(*((int*)&f));
于 2012-10-12T23:33:35.327 回答