我正在使用一些嵌入式硬件,一个使用Dynamic C 9的Rabbit SBC.
我正在使用微控制器使用其中一个串行端口从数字罗盘传感器读取信息.
传感器使用单个带符号字节将值发送到微控制器.(-85到85)
当我收到这些数据时,我将它放入char
变量中
这对正值很好,但是当传感器开始发送负值时,读数会跳到255,然后再回到0.我认为这是因为最后一位用于确定负值/正值,并且正在扭曲真正的价值观.
我的初衷是将我的数据类型更改为signed char
.
但是,我遇到的问题是我使用的微控制器上的Dynamic C版本本身不支持signed char值,只有unsigned.
我想知道是否有办法手动将我收到的数据转换为有符号值?
我是C语言的新手。我将需要一个小程序将其转换int
为二进制文件,并且最好将二进制文件存储在数组中,以便进一步将它们拆开以进行解码。我有以下内容:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr[20];
int dec = 40;
int i = 0, ArrLen;
if(dec > 0)
{
while(dec > 0)
{
arr[i] = dec % 2;
i++;
dec = dec / 2;
}
}
else
{
printf("Invalid Number");
}
}
Run Code Online (Sandbox Code Playgroud)
从上面的代码中,我可以将二进制值存储在中arr
。但是,与其获得二进制等价物:101000
,现在的数组就像{0, 0, 0, 1, 0, 1}
,与正确答案相反。所以问题是,如何以正确的顺序获取数组或翻转数组?我肯定有一件事,那就是最大数组长度不会超过8
元素。
此转换将重复使用。因此,我计划将其放入函数中,以便能够调用该函数,传入整数,然后将数组作为返回值。因此,另一个问题是,将数组作为返回值是否可行?