| 应该是从4开始,但就取少一位。没有搞明白是怎么回事。必须从5开始。 |
|
你这句不就是分离的吗? for(i=5;i<8;i++) temp=(char)temp*10+(str[i]-30); 但是有两个问题:一是,i应该从4开始;二是,30 是十六进制,应该用48 |
|
| sprintf(%d)的长度是不固定的,可能是“1”、也可能是“10”,还可能是“110”,那就要从最后的\n开始向前分离数字,直到遇到字母为止。 |
| ASCII编码而已,直接按ASCII判断就可以了。哪怕有中文,都一样可以分离出来。 |
| 数字asc码,110三个字节。百位,十位,个位分别减0x30.百位得到值0x01再乘以100,十位得到值01再乘以10,个位得到值00。这三个字节数字的和就是可计算的值。 |
samxon 发表于 2024-5-12 16:22 ASCII好像是直接减去一个数字就变成数字了吧,好像是0x30,这样直接拿去显示就好了吧,不需要再整成一个变量,再分解BCD码,多麻烦啊 |
xiaobendan001 发表于 2024-5-12 16:17 把time110后面的110变成可以计算的110,然后用数码管显示出来。 |
lxh2002 发表于 2024-5-12 15:58 楼主意思大概是把字符串110变成三个数字,1,1,0; |
| 如果数据长度是固定的,用一个数组接收数据,把time作为数据头,找到数据头,第五位就是你要的 |