说明
使用该指令,可以将在输入 IN 中指定的十六进制数转换为 ASCII 字符串。转换结果存储到参数 OUT 指定的地址中。
使用参数 N,可指定待转换十六进制字节的数量。由于 ASCII 字符为 8 位,而十六进制数只有 4 位,所以输出值长度为输入值长度的两倍。在保持原始顺序的情况下,将十六进制数的每个半位元组转换为一个字符。
可最多有 65635 个字符写入 ASCII 字符串。转换结果以数字 0 ~ 9 和大写字母 A ~ F 表示。
该指令不检测任何错误条件。
参数
下表列出了“HTA”指令的参数:
参数 | 声明 | 数据类型 | 存储区 | 说明 |
---|---|---|---|---|
IN | Input | POINTER* | I、Q、M、D | 十六进制数的起始地址 |
N | Input | WORD | I、Q、M、D、L、P 或常量 | 待转换的十六进制字节数 |
OUT | Output | POINTER* | D、L | 结果的存储地址。 |
* 指针格式为双字,用于跨区域间接寄存器寻址 |
示例
只有输入 I 0.0 的信号状态为“1”(激活),才执行该指令。在本示例中,N 输入参数设置为 3,表示要转换三个十六进制字符。将十六进制字节存储在以 IN 指针指定的地址为起点的数据块 1 中:DB1.DBX10.0。字符串将输出到由 OUT 指针指定的地址处:从 DB2.DBX0.0 开始(数据块 2)。
下表列出了十六进制数转换为 ASCII 字符串的示例:
IN | N | OUT | BR 状态 |
---|---|---|---|
W#16#0123 | 2 | '0123' | 1 |
16#123AF01023 | 4 | '123AF010' | 0 |
下表显示了 ASCII 字符及其相对应的十六进制值:
十六进制数 | ASCII 编码的十六进制值 | ASCII 字符 |
---|---|---|
0 | 30 | "0" |
1 | 31 | "1" |
2 | 32 | "2" |
3 | 33 | "3" |
4 | 34 | "4" |
5 | 35 | "5" |
6 | 36 | "6" |
7 | 37 | "7" |
8 | 38 | "8" |
9 | 39 | "9" |
A | 41 | "A" |
B | 42 | "B" |
C | 43 | "C" |
D | 44 | "D" |
E | 45 | "E" |
F | 46 | "F" |
全部0条评论
快来发表一下你的评论吧 !