在实际项目中,有时候需要位与字节的相互转换。比如:将8个位值(布尔值)组成一个字节,或者16个位值组成一个字,或者将一个字节按照其位顺序分成8个布尔值。今天这篇文章,我们来介绍下如何编程实现位与字节的相互转换。我们使用变量的切片访问功能来编写两个函数:FC5002_BitsToByte和FC5005_ByteToBits,前者实现将8个布尔值组成一个字节,后者实现将一个字节按照其位顺序分成8个布尔值,接下来详细介绍下。
1、FC5002_BitsToByte
该函数将8个布尔值组成一个字节变量,其变量声明如下图所示:
其中:
该函数的代码如下:
上述代码中“#tmpByte.%Xb(b=0~7)”是变量的切片访问方式,比如:#tmpByte.%X0表示访问该变量的第0位。
2、FC5005_ByteToBits
该函数将一个字节按照其位顺序输出8个布尔值,其变量声明如下图所示:
其中:
该函数的代码如下:
这两个函数我都测试过,用同样的方式可以实现将16个布尔值组成一个字,或者将一个字分解成16个布尔值。类似的函数我之前还写过一篇文章《西门子SCL编程实例——按位读写字变量》,它实现读写字中的某一位。
联系客服