精易论坛

标题: BASE64 [打印本页]

作者: LYForever    时间: 2023-7-8 00:39
标题: BASE64
应该之前从论坛里找来或者精易模块提取的,随去随用。

  
子程序名返回值类型公开备 注
文本_BASE64编码文本型 
参数名类 型参考可空数组备 注
待编码数据字节集
变量名类 型静态数组备 注
余数  
临时字节型3
变量  
集合字节集 
长度整数型 
字符字节集 
i  
长度 = 取字节集长度 (待编码数据)
如果真 (长度 < 1)
返回 (“”)
余数 = 长度 % 3
如果真 (余数 > 0)
待编码数据 = 待编码数据 + 取空白字节集 (3 - 余数)
长度 = 取字节集长度 (待编码数据)
字符 = 取空白字节集 (长度 × 4 ÷ 3)
i = 1
集合 = 到字节集 (“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”)
变量循环首 (1, 长度, 3, 变量)
临时 [1] = 待编码数据 [变量]
临时 [2] = 待编码数据 [变量 + 1]
临时 [3] = 待编码数据 [变量 + 2]
字符 [i] = 集合 [右移 (临时 [1], 2) + 1]
字符 [i + 1] = 集合 [左移 (位与 (临时 [1], 3), 4)右移 (临时 [2], 4) + 1]
字符 [i + 2] = 集合 [左移 (位与 (临时 [2], 15), 2)右移 (临时 [3], 6) + 1]
字符 [i + 3] = 集合 [位与 (临时 [3], 63) + 1]
i = i + 4
变量循环尾 ()
如果真 (余数 > 0)
长度 = 取字节集长度 (字符)
如果 (余数 = 1)
字符 [长度 - 1]取代码 (“=”, )
字符 [长度]取代码 (“=”, )
字符 [长度]取代码 (“=”, )

返回 (到文本 (字符))
子程序名返回值类型公开备 注
文本_BASE64解码字节集 
参数名类 型参考可空数组备 注
编码文本文本型
变量名类 型静态数组备 注
文本长度  
整倍数  
三字节组字节型3
四字节组字节型4
编码值  
X  
n  
二进制数据字节集 
编码文本 = 删全部空 (编码文本)
编码文本 = 子文本替换 (编码文本, #换行符, , , , )
文本长度 = 取文本长度 (编码文本)
整倍数 = 文本长度 \ 4
如果真 (文本长度 % 4 ≠ 0)
整倍数 = 整倍数 + 1
计次循环首 (整倍数, X)
计次循环首 (4, n)
四字节组 [n]取代码 (编码文本, (X - 1) × 4 + n)
编码值 = 寻找文本 (“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”, 字符 (四字节组 [n]), , )
如果真 (编码值 = -1)
跳出循环 ()
四字节组 [n] = 编码值 - 1
计次循环尾 ()
三字节组 [1]位或 (四字节组 [1] × 4, 四字节组 [2] ÷ 16)
三字节组 [2]位或 (四字节组 [2] × 16, 四字节组 [3] ÷ 4)
三字节组 [3]位或 (四字节组 [3] × 64, 四字节组 [4])
二进制数据 = 二进制数据 + 到字节集 (三字节组)
处理事件 ()
计次循环尾 ()
如果真 (n < 5)  ' 最后一组4字符是提前退出的,截取字节集
n = 5 - n
二进制数据 = 取字节集左边 (二进制数据, 取字节集长度 (二进制数据) - n)
返回 (二进制数据)


作者: wuqingg    时间: 2023-7-8 08:50
从哪抠出来的?
作者: 君九    时间: 2023-7-8 09:38
模块里弄出来的
作者: 396384183    时间: 2023-7-8 11:40

支持开源~!感谢分享
作者: pipicool    时间: 2023-7-8 13:32
学习一下
作者: 1184798949    时间: 2023-7-9 08:59
支持开源~!感谢分享
作者: 亿万    时间: 2023-7-10 20:58
支持开源~!感谢分享
作者: xiaosep123    时间: 2023-7-13 09:35
支持开源~!感谢分享
作者: qwerrrrr    时间: 2023-8-5 00:46
从哪抠出来的?
作者: LYForever    时间: 2023-8-5 11:24
qwerrrrr 发表于 2023-8-5 00:46
从哪抠出来的?

应该是老版本的精易模块
作者: 圆圈    时间: 2023-8-20 12:10
错误(10126): 指定命令“大于或等于”不能直接在语句首部使用。
作者: 阿凡地方23    时间: 2024-10-20 11:20
这才是真正的开源!必须给个赞




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4