如果这是初学者的问题,我事先道歉;我是C编程的新手。
我正在开发一个嵌入式设计项目,该项目要求我的ATmega128从传感器读取4字节数据。数据包含两个需要处理的14位测量。有一部分我不太确定,因为我还没有完成很多C编程。我的算法如下:
1)从传感器接收4字节数据(MS 2位和LS 2位将被丢弃) 2)将每个字节保存为4个无符号字符变量 3)屏蔽MS字节的MS 2位,LS字节的LS 2位相同 4)MS 2字节=第一次测量,LS 2字节=第二次测量
这部分我到目前为止都可以做到。我不确定的是C如何将二进制转换为十进制。我需要将两个14位测量值转换为unsigned int,以便更容易执行计算。是否有自动执行此操作的指令?或者,如果我对它使用整数运算,编译器会自动将其转换为int吗?或者也许没有这些,我必须编写自己的函数来转换它?
答案 0 :(得分:0)
所有C数据都表示为二进制,因此无符号字符值实际上只是整数。它们表示为二进制,但您可以将它们用作数字。所以+, - ,*等就像你期望的那样工作(只需注意/因为整数除法和浮点除法不同)。