我想将十六进制值转换为电压转换,如下所述,
2字节签名2s Comp二进制分数,二进制点位于最高位的右侧。 1:512V缩放。 示例:
0x2A80 → 170.00 V
0xD580 → ‐170.00 V
但是0x2A80转换给了我10880十进制值。如何从0x2A80获得170.00 V?
答案 0 :(得分:1)
如果0x2A80是170.00,则表示在该点之前有10位,在该点之后有6位。或者换句话说,你有10880/64 == 170。
您的问题似乎包含一些误解:
170.0是电压的事实无关紧要。无论数字是电压,距离还是没有单位的数字,数字的作用都是一样的。
在大多数编程语言中,你没有"十进制"或"十六进制"价值观,你只有价值观。只有在处理文本输出和字符串时才会出现十进制和十六进制。 0x2A80
10880,0xD580
-10880。
如果你碰巧在C编程:
short fixedPointNumber;
float floatingPointNumber;
scanf("%hx", &fixedPointNumber);
floatingPointNumber = fixedPointNumber / 64.0f;
printf("Converted number: %f\n", floatingPointNumber);