我有一个函数,我试图从PHP转换。我正在执行这个例子的函数:
latlong_hex("1234.5678N");
并且我需要处理结果但是我遇到了字符串的问题,需要双倍转换和计算。转换后,我丢失小数点后的所有数字。底部的HEX功能正常工作。
int latlong_hex(char* gps_coord)
{
int gps_result;
char direction[2] = {0};
char gps_latlong[10] = {0};
double latdeg;
double tempDec;
char* tempGPS;
strncpy(gps_latlong, gps_coord, 9);
strncpy(direction, gps_coord+9, 1);
tempDec = strtod(gps_latlong, NULL);
free(gps_latlong);
tempDec = tempDec / 100;
if(direction == 'W' || direction == 'S')latdeg = round((floor(tempDec)+((tempDec - floor(tempDec))/60),7))*-1;
else latdeg = round((floor(tempDec) + ((tempDec - floor(tempDec))/60),7));
if(latdeg > 0){
gps_result = latdeg / 0.0000001;
}
else{
gps_result = (4294967295 + (latdeg/0.0000001)) ;
}
dec_hex(gps_result);
return 1;
}
答案 0 :(得分:3)
此:
.alignmentRectInsets
是即时未定义的行为,因为let ari = theMap.alignmentRectInsets
print("wth \(ari)")
> wth UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)
不是堆分配的对象。删除该行。
此外,您应该直接在free(gps_latlong);
上致电gps_latlong
,本地复制没有任何意义。