ASCII码转换问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ASCII码转换问题

有网友在留言中问我,用通信得到的ASCII码温度数据如下:30H 31H 31H 32H 2E 35H ,怎么也弄不出来在上位机显示112.5度。最多只能显示12.5度,就是说百位丢失了,用FC94以后不知怎么转换,希望老师能给个思路。

下面是我的回答:用FC 94转换的确有问题,可能是因为处理不了小数点。

如果用IEC的FC39转换,它要求ASCII码的格式必须是±v.nnnnnnnE±xx ,±为符号位,v是1位整数,nnnnnnn是7位小数,xx是两位指数。

我想了两个方案:

1.用原始的ASCII码组建满足FC 39的字符串,然后转换。

2.如果ASCII码的小数点位置是固定的,可编一个程序来转换。例如假设温度以0.1度为单位,用字的“与”运算将各位(不包括小数点)ASCII码的低4位数字取出来,乘以该位的权值(如果以0.1度为单位,例如百位为1000)后相加,得到以0.1度为单位的整数值。

数字0~9的ASCII码是16#30~16#39,下面的程序将MB0中数字的ASCII码转换为原数字:

L MB 0

L B#16#F

AW

T MB 1

我在网上征集方案,qzcq提出用人机界面直接显示字符串的方案就很好,已用仿真验证。需要补充一下,标准字符串有两个字节的头部,分别是最大字符数和实际的字符数。

你可以将16进制的30减去十进制的48就ok了,具体怎么编程你试试吧

也有专门的转换指令

不知道你用的是200还是300

你可以把16进制的数放到一个字节中,然后再取就行了

我不知道你转换二进制有什么用途,

可否说明你的意图

转换成16进制是可以进行运算的,你也可以读出其中某一位的值是0还是1

不知能否解决你的疑惑

相关文档
最新文档