|
本帖最后由 CNWTEPRG 于 2018-9-13 21:05 编辑
第一版:1字节有8个位,可以存放8个位成员,必须是8的倍数才可以转换,1个位成员等于1个逻辑型数组的成员。
第二版:开头前4字节标注有几个位成员,后面的是位的字节集数据,因此成员数可以是任意值。
转换过程
数组最后1成员如果为假则一直删除,遇到真为止,再往尾部填充假,到总成员数8的倍数为止。
处理后的逻辑型数组转换为字节集并在开头加上4字节转换前的位成员数即可。
还原过程
取开头前4字节数据,作为位成员数,第5字节到最后的数据为主要数据。
将主要数据还原成逻辑型数组,此时成员数还是8的倍数。
将成员数重定义成前4字节指定的位成员数并保留原有数据,多了用假填充,少了就删除。
- .版本 2
- .支持库 spec
- .程序集 字节集与逻辑型数组互转
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 A, 逻辑型, , "0"
- .局部变量 字节集, 字节集
- .局部变量 B, 逻辑型, , "0"
- ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
- A = { 真, 真, 假, 假, 真, 假, 真, 真, 假, 假, 假 }
- 字节集 = 逻辑型数组到字节集2 (A)
- 字节集到逻辑型数组2 (字节集, B)
- 调试输出 (字节集, B)
- .子程序 逻辑型数组转换前处理
- .参数 逻辑型数组, 逻辑型, 参考 数组
- .局部变量 计数, 整数型
- .局部变量 填充数, 整数型
- .变量循环首 (取数组成员数 (逻辑型数组), 1, -1, 计数)
- .如果 (逻辑型数组 [计数])
- 跳出循环 ()
- .否则
- 删除成员 (逻辑型数组, 计数, 1)
- .如果结束
- .变量循环尾 ()
- 重定义数组 (逻辑型数组, 真, 取数组成员数 (逻辑型数组) + 8 - 取数组成员数 (逻辑型数组) % 8)
- .子程序 逻辑型数组到字节集2, 字节集, 公开
- .参数 逻辑型数组, 逻辑型, 数组
- .局部变量 数组副本, 逻辑型, , "0"
- .局部变量 位数, 整数型
- 位数 = 取数组成员数 (逻辑型数组)
- 数组副本 = 逻辑型数组
- 逻辑型数组转换前处理 (数组副本)
- 返回 (到字节集 (位数) + 逻辑型数组到字节集 (数组副本))
- .子程序 字节集到逻辑型数组2, , 公开
- .参数 字节集数据, 字节集
- .参数 逻辑型数组, 逻辑型, 参考 数组
- .局部变量 位数, 整数型
- 位数 = 取字节集数据 (字节集数据, 3, 1)
- 字节集到逻辑型数组 (取字节集右边 (字节集数据, 取字节集长度 (字节集数据) - 4), 逻辑型数组)
- 重定义数组 (逻辑型数组, 真, 位数)
- .子程序 字节集到逻辑型数组, , 公开
- .参数 字节集数据, 字节集
- .参数 逻辑型数组, 逻辑型, 参考 数组
- .参数 高到低位, 逻辑型, 可空
- .局部变量 字节集长度, 整数型
- .局部变量 字节集计数, 整数型
- .局部变量 移位位数计数, 整数型
- .局部变量 移位后的值, 字节型
- .局部变量 逻辑数组计数, 整数型
- .局部变量 循环数组, 整数型, , "0"
- 字节集长度 = 取字节集长度 (字节集数据)
- 重定义数组 (逻辑型数组, 假, 字节集长度 × 8)
- .如果 (高到低位)
- 循环数组 = { 7, 0, -1 }
- .否则
- 循环数组 = { 0, 7, 1 }
- .如果结束
- .计次循环首 (字节集长度, 字节集计数)
- .变量循环首 (循环数组 [1], 循环数组 [2], 循环数组 [3], 移位位数计数)
- 逻辑数组计数 = 逻辑数组计数 + 1
- 移位后的值 = 左移 (1, 移位位数计数)
- 逻辑型数组 [逻辑数组计数] = 位与 (字节集数据 [字节集计数], 移位后的值) = 移位后的值
- .变量循环尾 ()
- .计次循环尾 ()
- .子程序 逻辑型数组到字节集, 字节集, 公开
- .参数 逻辑型数组, 逻辑型, 数组
- .参数 高到低位, 逻辑型, 可空
- .局部变量 逻辑组长度, 整数型
- .局部变量 字节集数据, 字节集
- .局部变量 字节集长度, 整数型
- .局部变量 计数, 整数型
- .局部变量 移位计数, 整数型
- .局部变量 逻辑计数, 整数型
- .局部变量 循环数组, 整数型, , "0"
- 逻辑组长度 = 取数组成员数 (逻辑型数组)
- .如果真 (逻辑组长度 % 8 ≠ 0)
- 输出调试文本 (“数组成员数必须是8的倍数才可以导出字节集数据。”)
- 返回 ({ })
- .如果真结束
- 字节集数据 = 取空白字节集 (逻辑组长度 ÷ 8)
- 字节集长度 = 取字节集长度 (字节集数据)
- .如果 (高到低位)
- 循环数组 = { 7, 0, -1 }
- .否则
- 循环数组 = { 0, 7, 1 }
- .如果结束
- .计次循环首 (字节集长度, 计数)
- .变量循环首 (循环数组 [1], 循环数组 [2], 循环数组 [3], 移位计数)
- .如果真 (逻辑型数组 [逻辑计数 + 1])
- 字节集数据 [计数] = 位或 (左移 (1, 移位计数), 字节集数据 [计数])
- .如果真结束
- 逻辑计数 = 逻辑计数 + 1
- .变量循环尾 ()
- .计次循环尾 ()
- 返回 (字节集数据)
复制代码 |
|