C -合并两个(uint8_t*)指针并转换为十进制



我有一个来自加速度计的数据问题。我能够读取加速度计,但数据来自指针(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。知道数据的格式是很重要的,但没有像"指针"那样的东西。如果你确定你想要的十进制数据是什么,你可以使用它。

然而,指针是程序在初始化或分配内存时分配给它的变量的物理地址。它通常用十六进制数表示。但是对于同一个程序的多次执行,这个数字基本上是随机的。

相关内容

  • 没有找到相关文章