将二进制转换为 int

标签 c binary int atmel

如果这是初学者的问题,我事先表示歉意;我是 C 编程新手。

我正在开发一个嵌入式设计项目,该项目需要我的 ATmega128 从传感器读取 4 字节数据。该数据包含我需要处理的两个 14 位测量值。有一部分我不太确定,因为我还没有做过很多 C 编程。我的算法如下:

1)从传感器接收4字节数据(MS 2位和LS 2位要折腾) 2)将每个字节保存到4个unsigned char变量中 3) 从MS字节中屏蔽掉MS 2位,从LS字节中屏蔽出LS 2位 4) MS 2 字节 = 第一次测量,LS 2 字节 = 第二次测量

这部分我目前可以做。我不确定C如何将二进制转换为十进制。我需要将两个 14 位测量结果转换为 unsigned int,以便更容易执行计算。有没有自动执行此操作的指令?或者如果我对其进行整数运算,编译器会自动将其转换为 int 吗?或者也许这些都不是,我必须编写自己的函数来转换它?

最佳答案

所有 C 数据都表示为二进制,因此 unsigned char 值实际上只是整数。它们以二进制表示,但您可以将它们用作数字。所以 +、-、* 等就像您期望的那样工作(只需注意/,因为整数除法和浮点除法是不同的)。

关于将二进制转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22025641/

相关文章:

c - 将 bin 文件读取为 int16

c++ - 有没有编译前不提示保存的C/C++ IDE?

c++ - 错误] ISO C++ 禁止指针和整数之间的比较 [-fpermissive]

c# - 如何在二维数组中应用二分查找?

c - 在函数 C 中修改字符串

java - int[] 数组的outputStream.write()

C - 内存分配问题 - 需要解释

使用指针创建字符串的一部分

binary - gentoo 二进制包列表

c++ - 使用可变参数模板和lambda函数进行二进制搜索