怎样把ASCiI码转换成整数

1.通讯输入数据是6个16进制数,先要把每个16进制数转换成ASCII码字符,再把转换后的字符串(一共6个字符,有的在十万位,有的在万位,还有四个分别在‘’个十百千位“”)转换后的字符串相当于一个6位的16进制数,再把它转换成10进制整数,哪位大师有案例啊,小弟急用,其中有些我会,有些不会,没时间慢慢研究,特来求援!

最佳答案

先将输入的6个字节,用Chars_TO_Stg转为字符串
然后再用STRG_VAL指令将字符串转为数值。根据你的输入,选择输出为整数或者浮点数
16进制与10进制,数值都是一样的,只是显示不同。

图片说明:

怎样把ASCiI码转换成整数  

提问者对于答案的评价:
谢谢大师解答,我还要把字符串转换成16进制数,现在有新的问题,比如我转换后的字符串是‘00ABCD’,我想用ATH指令把它转换成16#00ABCD,在N接口我输的也是6,为什么结果却变成16#00AB CD00,这是为什么呢?
 2,后来我用移位指令把后面的两个00去掉了变成了16#00ABCD,感觉这样是否有问题,ATH为什么加了两个0呢?
 3.最后我再把16#00ABCD用CONV指令转换成整数,结果是对的,但是我是有三位小数的,我就用DIV除法指令除以1000,为什么不能显示小数部分呢,我要在上位机显示的,请问是否有更好的办法?请不吝赐教!谢谢!

最佳答案作者回复:
昨晚看错你的提问了。首先将asc通过ath转为一个dint,然后将这个dint数除以256得到的就是结果。
1,因为ath是顺序执行的,执行完六个字符之后就结束了,剩下一个字节没有填充,所以会有00。
2,不要用move,用除法除以2^8。因为如果有符号位,直接用move,就不能正确显示负数。
3,你需要将整数转为浮点数之后,再除以1000,不然不能显示小数

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc165609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月10日
下一篇 2017年6月10日

相关推荐