.版本 2

.程序集 窗口程序集_启动窗口

.子程序 __启动窗口_创建完毕
.局部变量 编码数据, 字节集
.局部变量 解码结果, 字节集
.局部变量 长度, 整数型
.局部变量 文本结果, 文本型

编码数据 = { 61, 61, 61, 61 }
解码结果 = 取空白字节集 (100)
长度 = 解码6Bit编码 (编码数据, 4, 解码结果, 0)
.如果 (长度 > 0)
    文本结果 = 字节集转十六进制 (解码结果, 长度)
    输出调试文本 (“[运行结果]: ” + 文本结果)
.否则
    输出调试文本 (“[运行结果]: 解码失败,请检查输入!”)
.如果结束


.子程序 解码6Bit编码, 整数型, 公开
.参数 源字节集, 字节集
.参数 源长, 整数型
.参数 目标字节集, 字节集, 参考
.参数 期望长, 整数型
.局部变量 写位置, 整数型
.局部变量 位桶, 整数型
.局部变量 位计数, 整数型
.局部变量 i, 整数型
.局部变量 v, 整数型
.局部变量 单字节, 字节型

写位置 = 0
位桶 = 0
位计数 = 0

.变量循环首 (1, 源长, 1, i)
    v = 源字节集 <i> - 60
    .如果真 (v < 0 或 v > 63)
        跳出循环 ()
    .如果真结束


    位桶 = _位或 (_位左移 (位桶, 6), v)
    位计数 = 位计数 + 6

    .判断循环首 (位计数 ≥ 8)
        位计数 = 位计数 - 8
        单字节 = 到字节 (_位与 (_位右移 (位桶, 位计数), 255))
        .如果真 (写位置 < 取字节集长度 (目标字节集))
            写位置 = 写位置 + 1
            目标字节集 [写位置] = 单字节
        .如果真结束
        .如果真 (期望长 > 0 且 写位置 ≥ 期望长)
            返回 (写位置)
        .如果真结束

    .判断循环尾 ()
.变量循环尾 ()
返回 (写位置)


.子程序 字节集转十六进制, 文本型
.参数 字节集, 字节集
.参数 长度, 整数型
.局部变量 i, 整数型
.局部变量 结果, 文本型
.局部变量 临时, 文本型

结果 = “”
.计次循环首 (长度, i)
    临时 = 取十六进制文本 (字节集 <i>)
    .如果真 (取文本长度 (临时) = 1)
        临时 = “0” + 临时
    .如果真结束
    结果 = 结果 + 临时
.计次循环尾 ()
返回 (结果)


.子程序 _位左移, 整数型
.参数 n, 整数型
.参数 c, 整数型

置入代码 ({ 139, 69, 8, 139, 201, 211, 224, 201, 194, 8, 0 })
返回 (0)

.子程序 _位右移, 整数型
.参数 n, 整数型
.参数 c, 整数型

置入代码 ({ 139, 69, 8, 139, 201, 211, 232, 201, 194, 8, 0 })
返回 (0)

.子程序 _位与, 整数型
.参数 a, 整数型
.参数 b, 整数型

置入代码 ({ 139, 69, 8, 35, 69, 12, 201, 194, 8, 0 })
返回 (0)

.子程序 _位或, 整数型
.参数 a, 整数型
.参数 b, 整数型

置入代码 ({ 139, 69, 8, 11, 69, 12, 201, 194, 8, 0 })
返回 (0)