c++ - MSB 到 LSB 交换后保留符号和小数

标签 c++ c c++11

我以 2 字节短值的十六进制值形式获取数据,但交换值后丢失了。

 signed short value = 0x0040;
 value = (value*0.5) - 40;
 convertMSBTOLSB(value); //Conversion used bcz my device reading as LSB first

//Implementation of convertMSBTOLSB(value)
unsigned short temp = ((char*) &value)[0];  // assign value's LSB
temp = (temp << 8) | ((char*) &value)[1];   // shift LSB to MSB and add value's MSB
value = temp;

转换后我的值为-8

当我发送 0x51 时出现问题,最终值应该是 0.5,但由于值被短签名而变为零。

convertMSBTOLSB 只是字节交换,我如何处理代码以便它可以解析 -ve 和十进制值

期望一些输入来更改代码,以便它可以解析 -ve 和十进制值

最佳答案

您不会得到 0.5,因为您的 value 变量被声明为短变量,因此只能保存整数。

关于c++ - MSB 到 LSB 交换后保留符号和小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31949360/

相关文章:

c++ - 从 UIImage 转换为 cv::Mat,然后返回 UIImage 会降低图像质量

mysql - C语言每分钟计数

c - 最小值字符串

c++ - 为什么 std::begin 使用尾随返回类型语法?

c++ - 这些在 string 和 wstring 之间转换的函数是否应该作为仅 header 实现?

c++ cin 输入不起作用?

c++ - 安装 VC++ 2010 无法解决 dll 加载问题

c++ - 获取和设置函数与引用函数

c - 在 C 中将字符串从数组传递到函数指针

c++ - 模板方法 enable_if 特化