我有一个来自加速度计的数据问题。我能够读取加速度计,但数据来自指针(uint8_t*)。我对C很陌生,但我认为它是一个指针。所以我必须值,例如:0x1B和LSB 0x29。
我需要将这些值合并成一个值并将其转换为十进制。
所以,二进制格式0x1B= 0001 1011和0x29=0010 1001
我想要这个值0001 1011 0010 1001 = 6953
我看到一些代码使用字节定义的值合并值。
Result = (Value1 <<8) | Value0;
如果有人能帮助我正确地理解如何将指针转换为十进制值,以便我可以进行更复杂的数学计算,我将不胜感激。
谢谢。
你可以试试这些函数中的一个是否能够将指针转换为整数值…这些应该可以在任何8位机器上编译。
int ResultBigEndian (void *byteptr) {
unsigned char *b=byteptr;
return (b[0] << 8) + (b[1]);
}
int ResultLittleEndian (void *byteptr) {
unsigned char *b=byteptr;
return (b[1] << 8) + (b[0]);
}
不存在"以指针形式出现"这种东西。您收到的数据是二进制格式的数据。对于你想用它做的事情来说,它所代表的东西是多余的。如果用十进制数计算,结果是1。知道数据的格式是很重要的,但没有像"指针"那样的东西。如果你确定你想要的十进制数据是什么,你可以使用它。
然而,指针是程序在初始化或分配内存时分配给它的变量的物理地址。它通常用十六进制数表示。但是对于同一个程序的多次执行,这个数字基本上是随机的。