我正在寻找一种正确的方法来解码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
答案 0 :(得分:0)
如果我错了,请纠正我,但我没有在你的函数中看到参数s的用法。假设p以某种方式表示s,这个循环是无限的,因为你永远不会更新* p来消耗s的最后一个字符。