我正在尝试将float转换为二进制字符串。我注意到很多教程都将浮动转换为所谓的“二进制浮动”。"例如,数字8.5
位于二进制浮点1000.1
中。
通过使用modf函数将尾数除以将整数部分和小数部分分成两个单独的整数来找到。然后使用位操作或仅使用除以2(对于十进制整数部分)打印这两个整数的二进制表示。
1000.1
不是我想要的。我想要实际的二进制字符串表示。
01000001 00001000 00000000 00000000
我无法确定在使用modf函数时,我的浮点数将能够转换为两个整数。
我目前有将整数转换为二进制字符串的函数。我想知道浮子是否存在这样的东西。如果是这样,请指出我正确的方向。感谢。
答案 0 :(得分:2)
获取浮动的地址,将其转换为int*
(或具有相同sizeof
的其他适当的整数类型),然后使用现有函数:
// assert(sizeof(float) == sizeof(int))
float f = 8.5;
convert_int_to_binary_string(*((int*)&f));