gpt4 book ai didi

GPS 数据包的字符数组操作

转载 作者:行者123 更新时间:2023-11-30 15:13:17 24 4
gpt4 key购买 nike

我创建了一个问题来理解 ascii 字符到整数的转换。这是我创建的问题:How to do math operations in Ascii?.我根据这些答案解决了我的问题。但我很难按照我的要求完成它。我有一个 char 数组,其中包含如下纬度值:

char *latitude = "4055.1792,N";

我需要获取第三位数字和逗号之间的数字,将其除以 60 并将其添加到前两位数字。因此,对于本示例,新的纬度值必须是:

4055.1792 对应于 40 +(55,1782)/60 = 40.9196

然后再次将其转换为字符串,如下所示:

*latitude = "40.9196,N";

我将值转换为整数并进行了数学运算,但如果我再次将其转换为字符串,代码就会变得又长又乱。有没有一种方法可以简单地做到这一点?这是我到目前为止所做的,

int tmpLat[8];
int temp = 0;
char *latitude = "4055.1792,N";

tmpLat[0] = latitude[0] - '0';
tmpLat[1] = latitude[1] - '0';
tmpLat[2] = latitude[2] - '0';
tmpLat[3] = latitude[3] - '0';
tmpLat[4] = latitude[5] - '0';
tmpLat[5] = latitude[6] - '0';
tmpLat[6] = latitude[7] - '0';
tmpLat[7] = latitude[8] - '0';

temp = tmpLat[2]*100000 + tmpLat[3]*10000 + tmpLat[4]*1000 + tmpLat[5]*100 +
tmpLat[6]*10 + tmpLat[7];

temp = temp/60;

printf("\r\nResult = %d%d.%d,%c\r\n",tmpLat[0],tmpLat[1],temp,latitude[10]);

我现在可以将它们转换为字符串,但我认为我正在做一些很长的事情。

最佳答案

这应该将两位数扫描为整数,然后扫描为 double 。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main( )
{
char *latitude = "4055.1792,N";
char dir = '\0';
int deg = 0;
double min = 0.0;
double conv = 0.0;

if ( sscanf ( latitude, "%2d%lf, %c", &deg, &min, &dir) == 3) {
conv = deg + ( min / 60.0);
printf ( "%f, %c\n", conv, dir);
}
return 0;
}

关于GPS 数据包的字符数组操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34722515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com