Microchip
直播中

白边赫

8年用户 209经验值
私信 关注
[问答]

如何将ascii字符转换为十进制值

大家好,我用PIC16F1709,pickit 3,XC8,MPLAB X,Windows10i有几个数组,包含字符形式的坐标数据(直接来自GPS单元),因此这些数字本身实际上是ascii数字,并且与它们的实际数字不相关。我需要它们在int形式,所以我可以把它们发送到另一个芯片,并将这些数字写入端口!据我所知,ascii数字有一个设定的偏移值,其中“0”=30,因此一时兴起,我暗示从数组中的每个字符中减去30(知道它不能工作),它似乎返回了某种以“u”开始的十六进制值。(使用两个固定宽度数组并从每个字符中减去30,直到检测到空字符为止,lat.[15]=5338.31447;lon.[15]=00146.71956;以下代码:返回的值看起来像u 0017u 0015u 001au.…当我单击旁边的小方框时,我的观察窗口不够大,不足以显示其余的有趣内容,这应该会详细描述所有内容,它只显示一行小方框,可能暗示有损坏/空数据。如果有人能给我指出正确的方向,如何最好地将ascii字符转换为十进制值,那就太好了……注意,我想把它保持为一个数组,因为现在我仍然需要将NMEA格式的坐标转换为正式的十进制,这很可能涉及到将数字分开。

回帖(2)

陈晨

2019-9-5 15:18:13
即使在32位,浮点数也不能包含其范围内的所有数字。每个转换和计算都有舍入。
举报

何羽衣

2019-9-5 15:30:24
您可能应该看一下这个http://float-point-gui.de/它详细地描述了浮点表示是如何工作的,以及为什么您看到了自己的样子。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分