将Matlab生成的字符串二进制转换为float

时间:2015-12-27 16:05:01

标签: c++ matlab encoding binary

我正在寻找一种正确的方法来解码C ++中的64位二进制文​​件,用Matlab编写(我不熟悉):

reshape(dec2bin(typecast(number,'uint8'),8).',1,[])

其中'number'是浮点数(负数或正数)

产生类似1100001011000000011100111110111111100001100100101110100000111111

的内容

我尝试过不同的方法来解码二进制文件,例如:

double bitstring_to_double(const char* p)
{
    unsigned long long x = 0;
    for (; *p; ++p)
    {
        x = (x << 1) + (*p - '0');
    }
    double d;
    memcpy(&d, &x, 8);
    return d;
}

但我得到了巨大的价值,例如-1.21694e + 118

1 个答案:

答案 0 :(得分:0)

如果我错了,请纠正我,但我没有在你的函数中看到参数s的用法。假设p以某种方式表示s,这个循环是无限的,因为你永远不会更新* p来消耗s的最后一个字符。