【发布时间】:2010-11-21 01:01:48
【问题描述】:
我正在尝试从 16 个元素的字节数组中获取数值(双精度)值,如下所示:
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 位,因为经过 4 次 8 位移位操作后它会溢出。
我知道我可以使用类似的东西
a = input[i] * pow(2,8*i);
但是,出于好奇,我想知道是否可以使用 shift 运算符解决此问题...
【问题讨论】:
-
你还没有说“输入[16]”试图代表什么。它是一个 128 位的整数值,还是别的什么?
-
您是否以 128 位无符号整数的形式将数字存储在“输入”中?
-
@Roddy:从他的算法看来,这些字符是 15 阶多项式(以 256 为底)中的系数。 (@paolo_,对吗?)
-
正如 Adrian P. 所说,输入 [16] 向量是我想表示为 128 位无符号整数的位序列