aizx 发表于 2019-8-22 09:34:26

哪位大神能帮忙解读下这部分程序是什么意思head=14这种格....

temp =0xffffffff & ( *(head + 14) + *(head + 15)*0x00000100 + *(head + 16)*0x00010000 + *(head + 17)*0x01000000);
    temp8 = 0xff & (*(head +30));
   GPS_Info->longtitude = temp / 10000000.0 + temp8 / 1000000000.0;
      

   temp =0xffffffff & ( *(head + 18) + *(head + 19)*0x00000100 + *(head + 20)*0x00010000 + *(head + 21)*0x01000000);
   temp8 = 0xff & (*(head +31));
   GPS_Info->latitude = temp / 10000000.0 + temp8 / 1000000000.0;

aizx 发表于 2019-8-22 09:37:54

大神们求帮忙

aizx 发表于 2019-8-22 09:38:24

顶顶顶

奏奏奏 发表于 2019-8-22 09:43:24

head + 14
就是名称叫做“head”这个数组里面第14+1个成员

*(head + 14)
就是取这个成员的值

aizx 发表于 2019-8-22 09:47:28

奏奏奏 发表于 2019-8-22 09:43
head + 14
就是名称叫做“head”这个数组里面第14+1个成员



大神能详细给我讲讲( *(head + 14) + *(head + 15)*0x00000100 + *(head + 16)*0x00010000 + *(head + 17)*0x01000000);这块嘛*(head + 15)*0x00000100这是什么意思   他们一串相加又是什么意思

wenyangzeng 发表于 2019-8-22 09:55:20

这个貌似GPS的数据运算,楼主应该先熟读相关的GPS器件的数据手册才能理解。

tgw860910 发表于 2019-8-22 09:55:27

aizx 发表于 2019-8-22 09:47
大神能详细给我讲讲( *(head + 14) + *(head + 15)*0x00000100 + *(head + 16)*0x00010000 + *(head + 17 ...

就是左移8位的意思,把 * 0x100 换成 << 8 会更好

toofree 发表于 2019-8-22 09:55:28

head是个指针,类型不知道,但根据你的程序,32位无符号整形的可能性比较大;
*(head + 15)就是指针指向的内容;
*(head + 15)*0x00000100,指针指向内容乘后面的数;

一级一级慢慢算吧

middle1102 发表于 2019-8-22 10:32:40

head是buffer的起始地址,*(head + 14)就是取基于起始地址偏移14个单位的内容,没有什么特别之处

aizx 发表于 2019-8-22 10:49:07

middle1102 发表于 2019-8-22 10:32
head是buffer的起始地址,*(head + 14)就是取基于起始地址偏移14个单位的内容,没有什么特别之处 ...

static uint8_tBuffer;
static uint8_tBuffer2   这个buffer是什么意思呢
页: [1] 2
查看完整版本: 哪位大神能帮忙解读下这部分程序是什么意思head=14这种格....