1.2 Codesys八进制数字字符串与字节互转
1、八进制数字字符串转换成字节,不包含前缀'8#',例如字符'177',转换后得数字8#177(10进制显示为127),具体功能代码如下:FUNCTION StrOct_To_Byte : BYTE
VAR_INPUT
InString_Octal : STRING(3);
END_VAR
VAR
pbyTemp : POINTER TO BYTE;
i: INT;
END_VAR
//8进制数字字符串转换成字节,不包含前缀'8#'
pbyTemp := ADR(InString_Octal);
FOR I := 1 TO Standard.LEN(InString_Octal) BY 1 DO
IF pbyTemp^ >= 48 AND pbyTemp^ <= 55 THEN
StrOct_To_Byte := SHL(StrOct_To_Byte,3) + (pbyTemp^ - 48);
END_IF;
pbyTemp := pbyTemp + 1;
END_FOR;
测试结果如下
2、字节转换成八进制数字字符串,例如数字8#177(10进制显示为127)转换后为'177',具体功能代码如下:
FUNCTION Byte_To_strOct : STRING(3)
VAR_INPUT
InByte : BYTE;
END_VAR
VAR
xFlag :BOOL;
byTemp : BYTE;
iIndex : INT;
pbyTemp : POINTER TO BYTE;
END_VAR
pbyTemp := ADR(Byte_To_strOct);
FOR iIndex := 2 TO 0 BY -1 DO
byTemp := SHR(InByte,3*iIndex) AND 16#07;
IF byTemp>0 THEN
xFlag:=TRUE;
END_IF;
IF xFlag THEN
byTemp := byTemp + 48;
pbyTemp^ := byTemp;
pbyTemp:= pbyTemp +1;
END_IF;
END_FOR;
pbyTemp^:= 0;测试结果如下:
经过学习,可以很快轻松完成八进制数字字符串与字,双字数字的互转功能。
页:
[1]