博途功能ATH:将ASCII字符串转换为十六进制数

描述

 

说明

使用指令“ATH”将 IN 输入参数中指定的 ASCII 字符串转换为十六进制数。转换结果输出到 OUT 输出参数中。

  • 使用 IN 参数 (ASCII) 处的指针,可引用以下数据类型:STRING, WSTRING, CHAR, BYTE, Array of CHAR, Array of BYTE, WCHAR, Array of WCHAR, Array of WORD。

  • 使用 OUT 参数(十六进制)处的指针,可引用以下数据类型:Array of CHAR, Array of BYTE, Array of WORD, STRING, BYTE, CHAR, WORD, INT, DWORD, DINT, SINT, USINT, UINT, UDINT。以下数据类型仅限于 S7-1500:Array of WCHAR, WSTRING, WCHAR, ULINT, LINT, LWORD

通过参数 N,可指定待转换 ASCII 字符的数量。最多可转换 32767 个有效 ASCII 字符。只能解释数字“0”到“9”、大写字母“A”到“F”以及小写字母“a”到“f”。所有其它字符都将转换为 0。

由于 ASCII 字符为 8 位,而十六进制数只有 4 位,所以输出字长度仅为输入字长度的一半。ASCII 字符将按照读取时的顺序装换并保存在输出中。如果 ASCII 字符数为奇数,则最后转换的十六进制数右侧的半个字节将以“0”进行填充。

参数

下表列出了“ATH”指令的参数:

 

 

参数

声明

数据类型

存储区

说明

IN

Input

VARIANT

D、L

指向 ASCII 字符串的指针

N

Input

INT

I、Q、M、D、L 或常量

待转换的 ASCII 字符数

RET_VAL

Return

WORD

I、Q、M、D、L

指令的状态

OUT

Output

VARIANT

I、Q、M、D、L

十六进制数

 

ASCII

 

ASCII 字符和十六进制值

下表显示了 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

 

 

示例

下表列出了 ASCII 字符串转换为十六进制数的示例:

IN 的数据类型

IN

N

OUT

ENO 状态

STRING, WSTRING

'0a23'

4

  • WORD#16#0A23

  • UINT#10#2595

1

STRING, WSTRING

‘123aFx1a23’

10

  • LWORD#16#123AF01A_23000000

  • ULINT#10#1 313 626 236 378 939 392

0

STRING, WSTRING

‘a23’

3

WORD#16#A230

1

STRING, WSTRING

‘0a23’

4

  • WORD#[16#0A23, 16#0000]

  • BYTE#[16#0A, 16#23]

1

STRING, WSTRING

‘aFbE’

1

  • CHAR#‘A’

  • WCHAR#‘A’

1

STRING, WSTRING

‘0a23’

4

  • CHAR#[‘0’, ‘A’, ‘2’, ‘3’]

  • WCHAR#[‘0’, ‘A’, ‘2’, ‘3’]

1

STRING, WSTRING

‘123aFC1a23’

10

  • STRING#‘123AFC1A23’

  • WSTRING#‘123AFC1A23’

1

ArrayOfCHAR, ArrayOfWCHAR

[‘a’, ‘B’, ‘E’, ‘3’]

4

WORD#16#ABE3

1

ArrayOfBYTE

[16#39, 16#32, 16#35]

3

WORD#16#9250

1

ArrayOfWORD

[16#1234, 16#0032, 16#0031, 16#0000]

3

WORD#16#0210

0

ArrayOfWORD

[16#0031, 16#0032, 16#0033, 16#0034]

4

WORD#16#1234

1

ArrayOfWORD

[16#AB31, 16#32AF, 16#4333, 16#0034]

4

WORD#16#0004

0

ArrayOfWORD

[16#0031, 16#0032, 16#0033, 16#0034]

4

[16#1234, 16#0000, 16#0000, 16#0000]

1

ArrayOfWORD

[16#0034, 16#0035, 16#0036, 16#0037, 16#0041, 16#0042, 16#0043, 16#0044]

8

DWORD#16#4567_ABCD

1

 


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分