关于ASCII 转换16进制指令的讨论: ATH 请指教请指教

看了西门子官网视频教学,说:假设VB30-VB32中,存放了3个%ignore_a_1%码,33  45  41  通过转换指令将他们转换为16进制数3E 和16进制数AX,  分别存放在字节VB40 和 VB41中,X表示VB41中低四位的数未发生变化。那么问题来了!!!!
33  45   41 本来就是16进制数啊,它怎么说是3个ASCII 码呢?  3 E A  分别是16进制数33  45   41 对应的‘字符’,视频怎么说是16进制数3E 和16进制数AX? ??    看着像16进制数转换为ASCII字符,   然而解说怎么说是  ASCII  码 转换为 16进制数??????请教大神
8位二进制数ASCII码00110011  =   16进制数33    这个33是8位二进制ASCII码00110011转换为16进制得到的33,  因此这个叫ASCII转换为16进制数指令,简称ATH指令,输出的OUT是以字符的形式体现对吗?      但是输出OUT为什么是两个字节呢???   我看到的是 1个ASCII字符占用4位二进制数也就是半个字节。 如果输出的OUT以字符形式体现出来,为什么不直接从8位二进制转换为字符??而是8位二进制数转换为16进制后,再以字符形式体现出来???     还是 不管8位二进制数转换为10进制   或者16进制   都是以字符的形式表现出来????谢谢,我问的有点多哈。。。。。

图片说明:

关于ASCII 转换16进制指令的讨论: ATH   请指教请指教   

最佳答案

这个理解起来没这么复杂,ASCII是一种编码的方式,而16进制只是一个数据的显示格式,两个不是同一个东西。
以你上面说的为例,2个ASCII码,33 45
33对应的字符是3   45对应的字符是E
1、如果用数据类型String显示(忽略第一个表示字符数量的字节),那么就是 ‘3E’
2、如果用BYTE(相当于16进制)显示,那么就是 33  45

那么ATH这个指令,实际的就是将字符解码,用BYTE显示出来,而不需要使用字符串类型才能看到对应的字符。

譬如33,实际上我想表达的是字符3,而不是16进制的16#33。那么,正常来说,我需要用CHAR类型才能看到这个数字代表的意思,但经过ATH转换后,我直接用普通的BYTE类型也能看到这个字符16#3X
(这个有点像解密,解密前是16#33 16#45,解密后(ATH)是16#3E。而3E正是我想传递的内容)

技术文档中也有提到该指令的限制(因为收到16进制的影响,最大到F):有效的 ASCII 输入字符为字母数字字符 0 到 9(十六进制代码值为 30 到 39)以及大写字符 A 到 F(十六进制代码值为 41 到 46)。

提问者对于答案的评价:
谢谢!  Thank  you!!!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午11:57
下一篇 2021年7月5日 上午11:57

相关推荐

发表回复

登录后才能评论