ASCII码转换问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
不知能否解决你的疑惑