[英]Converting a string holding binary to float
我有一个字符串,其中包含一个要转换为浮点型的二进制值。 我找不到解决办法。
例如,我有一个
string temp = "00000000000000000000000101111100";
以二进制表示0.25。
在string::size_type
上使用stof
on string::size_type
产生1.0111110e + 008,该值存储在float变量中(根据Visual Studio),并打印该值会导致垃圾-101111104。
我的问题:有没有一种方法可以将二进制字符串直接转换为浮点数,或者我需要计算浮点数然后存储它?
这是一种方法
std::string temp = "00000000000000000000000101111100";
assert(temp.length() == 32);
int n = 0;
for(int i = 0; i < temp.length(); ++i)
{
n |= (temp[i] - 48) << i;
}
float f = *(float *)&n;
不知道为什么要转换为float,但是可以使用std::bitset
转换为unsigned long
#include <bitset>
//...
std::string temp = "00000000000000000000000101111100";
std::bitset<33> n (temp);
unsigned long result = n.to_ulong();
当然,如果需要,也可以将unsigned long强制浮起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.