CodeC
下载方式
使用 cspkg 工具进行下载
在 shell 中使用 cspkg 工具,并使用以下指令
下载 Codec 包
cspkg install codec
简介
CodeC 为解编码扩展包,提供对 Base64 编码译码,Base32 编码译码与 Json 编码译码的支持。
想要使用不同的编码译码工具时,只需使用对应命名空间下的方法即可。
目前 CodeC 包中共有以下命名空间:
由于 CodeC 内容并不多,本页面将会展示全部的 API。
快速开始
- codec_example_1.csc
- import codec.base64.standard as base64
- import codec.json as json
- function to_timestamp(t)
- @begin
- return base64.encode(json.to_string(json.from_var({
- "year": t.year,
- "day" : t.yday,
- "hour": t.hour,
- "min" : t.min
- }.to_hash_map())))
- @end
- end
- function from_timestamp(t)
- return json.to_var(json.from_string(base64.decode(t)))
- end
- var str = to_timestamp(runtime.local_time())
- var obj = from_timestamp(str)
- system.out.println(to_string(1900 + obj.year) + "年" + obj.day + "日" + obj.hour + "时" + obj.min + "分")
- system.out.println(str)
Base32 & Base64 编码译码
Base32 和 Base64 拥有不同的命名空间,意为选用不同的编码译码器:
命名空间 | 描述 |
---|---|
Base32 译码方式 | |
standard | 标准编码译码器(RFC4648) |
rfc4648 | RFC4648 编码译码器 |
crockford | Crockford 编码译码器 |
hex | 二进制编码译码器 |
Base64 译码方式 | |
standard | 标准编码译码器(RFC4648) |
rfc4648 | RFC4648 编码译码器 |
url | 为链接优化的 RFC4648 编码译码器 |
url_unpadded | 为链接优化的 RFC4648 编码译码器,无对齐符号 = |
在以上所有命名空间内,Base32 与 Base64 都拥有编码与解码方法:
方法 | 描述 |
---|---|
string encode([codec], string) | 编码 |
string decode([codec], string) | 解码 |
Json 编码译码
CovScript 类型与 Json 类型对应如下:
CovScript 类型 | Json 类型 |
---|---|
null | null |
number | real |
string | string |
boolean | boolean |
array | array |
hash_map | object |
命名空间 json
下有如下方法:
方法 | 描述 |
---|---|
[json] from_string(string) | 从字符串新建 Json 值 |
[json] from_stream([istream]) | 从流新建 Json 值 |
[json] from_var(var) | 从 CovScript 变量新建 Json 值 |
string to_string([json]) | 将 Json 值转换为字符串 |
var to_var([json]) | 将 Json 值转换为 CovScript 变量 |
[json] make_null() | 创建空值 |
[json] make_array() | 创建数组 |
[json] make_object() | 创建对象 |
[json] make_int(number val) | 创建整数 |
[json] make_uint(number val) | 创建无符号整数 |
[json] make_real(number val) | 创建浮点数 |
[json] make_string(string str) | 创建字符串 |
[json] make_boolean(boolean val) | 创建布尔值 |
number as_int([json]) | 获取整数 |
number as_uint([json]) | 获取无符号整数 |
number as_real([json]) | 获取浮点数 |
string as_string([json]) | 获取字符串 |
boolean as_boolean([json]) | 获取布尔值 |
boolean is_int([json]) | 判断是否为整数 |
boolean is_uint([json]) | 判断是否为无符号整数 |
boolean is_real([json]) | 判断是否为浮点数 |
boolean is_null([json]) | 判断是否为空值 |
boolean is_array([json]) | 判断是否为数组 |
boolean is_object([json]) | 判断是否为对象 |
boolean is_number([json]) | 判断是否为数字 |
boolean is_string([json]) | 判断是否为字符串 |
boolean is_boolean([json]) | 判断是否为布尔值 |
number arr_size([json]) | 获取数组大小 |
boolean arr_empty([json]) | 判断数组是否为空 |
void arr_clear([json]) | 清空数组 |
void arr_resize([json]) | 调整数组大小,多余填充空值 |
[json] arr_append([json] this, [json] value) | 在尾部添加新值 |
[json] arr_get([json], number) | 获取指定下标的值 |
void arr_set([json], number idx, [json] value) | 设置指定下标的值 |
[json] get_member([json] this, string key) | 获取对象成员 |
[json] set_member([json] this, string key, [json] value) | 设置对象成员 |
boolean has_member([json] this, string key) | 判断是否存在成员 |
array get_member_names([json]) | 获取成员名称列表 |
void to_stream([json] this, [ostream] os) | 将 Json 值输出至流 |