gpt4 book ai didi

将字节数组转换为 double - c

转载 作者:太空狗 更新时间:2023-10-29 17:00:51 25 4
gpt4 key购买 nike

我正在尝试从 16 个元素的字节数组中获取数字( double )值,如下所示:

unsigned char input[16];
double output;
...
double a = input[0];
distance = a;
for (i=1;i<16;i++){
a = input[i] << 8*i;
output += a;
}

但它不起作用。看起来包含左移结果的临时变量只能存储 32 位,因为 8 位的 4 次移位操作后溢出。

我知道我可以使用类似的东西

a = input[i] * pow(2,8*i);

但是,出于好奇,我想知道是否可以使用移位运算符来解决这个问题...

最佳答案

编辑:如果没有像 __int128 这样的东西,这将无法工作(见评论)。

a = input[i] << 8*i;

表达式 input[i] 被提升为 int ( 6.3.1.1 ) ,它在您的机器上是 32 位的。为了克服这个问题,左边的操作数必须是 64 位的,就像在

a = (1L * input[i]) << 8*i;

a = (long long unsigned) input[i] << 8*i;

记住字节顺序

关于将字节数组转换为 double - c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com