1、二进制数字字符串转换成字节,不包含前缀'2#',例如字符'11110000',转换后得数字2#11110000,功能代码如下:
FUNCTION StrBin_To_Byte : BYTE
VAR_INPUT
InString_Binary : STRING(8); //二进制字符
END_VAR
VAR
pbyTemp : POINTER TO BYTE;
iIndex : INT;
END_VAR
//2进制数字字符转换成字节,不包含前缀'2#',例如字符'11110000',转换后得数字2#11110000
pbyTemp := ADR(InString_Binary);
FOR iIndex := 1 TO 8 BY 1 DO
IF pbyTemp^<48 OR pbyTemp^>49 THEN
EXIT; //实际字符长度小于8
ELSIF pbyTemp^ = 48 THEN //0字符
StrBin_To_Byte := SHL(StrBin_To_Byte,1);
ELSIF pbyTemp^ = 49 THEN //1字符
StrBin_To_Byte := SHL(StrBin_To_Byte,1)+1;
END_IF;
pbyTemp := pbyTemp + 1;
END_FOR;
运行测试结果如下:
2、字节转换成二进制数字字符串,不包含前缀'2#'例如数字2#11110000,转换后得字符'11110000',功能代码如下:
FUNCTION Byte_To_strBin : STRING(8)
VAR_INPUT
InByData : BYTE;
END_VAR
VAR
iIndex : INT;
pbyTemp : POINTER TO BYTE;
END_VAR
//例如数字2#11110000,转换后得字符'11110000'
pbyTemp := ADR(Byte_To_strBin);
FOR iIndex := 7 TO 0 BY -1 DO
pbyTemp^ := (SHR(InByData,iIndex) AND 16#01) + 48;
pbyTemp := pbyTemp + 1;
END_FOR;
pbyTemp^ := 0;
运行测试结果如下:
经过学习,可以很快轻松完成二进制数字字符串与字,双字数字的互转功能。