我有一个字符串,其中包含我想要转换为float的二进制值。我找不到办法做到这一点。
例如,我有一个
string temp = "00000000000000000000000101111100";
以二进制表示0.25。
对stof
使用string::size_type
会产生1.0111110e + 008存储在浮点变量中(根据visual studio)并将值打印在垃圾 - 101111104。
我的问题:有没有办法直接将二进制字符串转换为浮点数,还是需要计算浮点数然后存储它?
答案 0 :(得分:4)
这将是一种方式
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;
答案 1 :(得分:0)
不确定为什么要转换为float,但可以使用std::bitset
转换为无符号长
#include <bitset>
//...
std::string temp = "00000000000000000000000101111100";
std::bitset<33> n (temp);
unsigned long result = n.to_ulong();
当然,如果你愿意,你可以将unsigned long转换为float。