1.1 Codesys二进制数字字符串与字节互转-CODESYS V3-酷德网 - CoDeSys软件教程下载,CoDeSys工控资讯门户 

酷德网

HSC6490-cn中国制造,中国芯~
查看: 2887|回复: 0

1.1 Codesys二进制数字字符串与字节互转

[复制链接]

该用户从未签到

发表于 2023-9-22 22:05:42 | 显示全部楼层 |阅读模式
1、二进制数字字符串转换成字节,不包含前缀'2#',例如字符'11110000',转换后得数字2#11110000,功能代码如下:
  1. FUNCTION StrBin_To_Byte : BYTE
  2. VAR_INPUT
  3.         InString_Binary : STRING(8);        //二进制字符
  4. END_VAR
  5. VAR
  6.         pbyTemp         : POINTER TO BYTE;
  7.         iIndex          : INT;       
  8. END_VAR
  9. //2进制数字字符转换成字节,不包含前缀'2#',例如字符'11110000',转换后得数字2#11110000
  10. pbyTemp := ADR(InString_Binary);
  11. FOR iIndex := 1 TO 8 BY 1 DO
  12.     IF pbyTemp^<48 OR pbyTemp^>49 THEN
  13.            EXIT;                     //实际字符长度小于8
  14.         ELSIF pbyTemp^ = 48 THEN     //0字符
  15.                 StrBin_To_Byte := SHL(StrBin_To_Byte,1);
  16.         ELSIF pbyTemp^ = 49 THEN     //1字符
  17.                 StrBin_To_Byte := SHL(StrBin_To_Byte,1)+1;
  18.         END_IF;
  19.         pbyTemp := pbyTemp + 1;
  20. END_FOR;
复制代码
运行测试结果如下:
1.1 Codesys二进制数字字符串与字节互转-1.png


2、字节转换成二进制数字字符串,不包含前缀'2#'例如数字2#11110000,转换后得字符'11110000',功能代码如下:
  1. FUNCTION Byte_To_strBin : STRING(8)
  2. VAR_INPUT
  3.         InByData    : BYTE;
  4. END_VAR
  5. VAR
  6.         iIndex      : INT;       
  7.         pbyTemp     : POINTER TO BYTE;
  8. END_VAR
  9. //例如数字2#11110000,转换后得字符'11110000'
  10. pbyTemp := ADR(Byte_To_strBin);
  11. FOR iIndex := 7 TO 0 BY -1 DO
  12.         pbyTemp^ := (SHR(InByData,iIndex) AND 16#01) + 48;
  13.         pbyTemp := pbyTemp + 1;
  14. END_FOR;
  15. pbyTemp^ := 0;
复制代码
运行测试结果如下:
1.1 Codesys二进制数字字符串与字节互转-2.png


经过学习,可以很快轻松完成二进制数字字符串与字,双字数字的互转功能。
+10
不赞一个?
打赏鼓励一下!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则


顶部qrcode底部
关注酷德网订阅号,获取更多资讯!

QQ|Archiver|手机版|小黑屋|酷德论坛 ( 苏ICP备16065247号-1 )|网站地图

GMT+8, 2026-10-23 17:35 , Processed in 0.138060 second(s), 51 queries .

酷德网

© 2001-2013 Hicodesys. 技术支持 by 酷德网

快速回复 返回顶部 返回列表