我在做一个串口通信的小程序,碰到一个问题: 其他的机器发了一串十六进制数据到我的电脑串口上,我如何获得其中的一段?
例如其他的机器发了一串十六进制数据: 57+51+14+0c+00+12到我的电脑串口上,如何将其中的00+12换算成十进制保存起来?

解决方案 »

  1.   

    这样的问题,你首先要明确接收到的数据57+51+14+0c+00+12是如何存放的
    ----如果是一个字符串S := '57+51+14+0c+00+12',可以知道,每2个字符加一个加号为一段。
        要从第5段起取两段'00+12':那就SubStr := Copy(S, 3 * 4 + 1, 5)就是了
        然后可以再用这种方法取得SubStr中+前的一段和+后的一段,然后分别StrtoInt再相加就是你要的整数了----如果你在接收时直接每个数都放到了数组或StringList中,那更简单了,直接通过下标读数组
        然后,如果是StringList,就StrtoInt再相加;如果是Byte数组,就直接相加...这样的问题,其实应该拿出时间来研究数据类型,简化问题,自己就找到解决方案了;如果只是把问题通报出来,即使别人给你代码,也可能不是你需要的;即使是你需要的,你直接复制到你的程序中,以后必将还会修改,到时你会更头痛。