繁体   English   中英

将包含二进制的字符串转换为float

[英]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();

REF

当然,如果需要,也可以将unsigned long强制浮起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM