//bin 文本编码 import crypt; namespace crypt.bin; encode = ..crypt.encodeBin; decode = ..crypt.decodeBin; encodeUrlBase64 = ..crypt.encodeUrlBase64; decodeUrlBase64 = ..crypt.decodeUrlBase64; encodeBase64 = function(str,len,flags = 0x40000001/*_CRYPT_STRING_BASE64|_CRYPT_STRING_NOCRLF*/){ return encode(str,len,flags); } decodeBase64 = function(str,len,flags = 1/*_CRYPT_STRING_BASE64*/){ return decode(str,len,flags); } encodeHex = function(str,len,flags = 0x40000004/*_CRYPT_STRING_HEX*/){ return encode(str,len,flags); } decodeHex = function(str,len,flags = 4/*_CRYPT_STRING_HEX*/){ return decode(str,len,flags); } base64DataUrl = function(str,mime){ return ..string.format('data:%s;base64,%s',mime: "text/plain; charset=UTF-8",..string.replace(encodeBase64(str),"\r\n","") ) } decodeBase64DataUrl = function(url){ if(!type.isString(url)) return; var mime,base64,data = ..string.match(url,"data\:(.*?)(<;base64>?),(.+)"); if(base64){ data = ..crypt.decodeBin(data,, 1/*_CRYPT_STRING_BASE64*/); }; return data,mime; } /**intellisense() crypt.bin = BASE64加密解密。\n简单封装 crypt.encodeBin 以及 crypt.decodeBin 函数。\n相关库与函数: string.base32,inet.urlData crypt.bin.encodeBase64(.(数据,长度,选项) = Base64 编码。\n参数 @1 可以指定字符串、buffer 或指针。\n如果参数 @1 是指针则应同时指定长度参数,否则长度参数可省略。\n调用此函数不建议指定选项参数 crypt.bin.decodeBase64(.(数据,长度,选项) = Base64 解码。\n参数 @1 可以指定字符串、buffer 或指针。\n如果参数 @1 是指针则应同时指定长度参数,否则长度参数可省略。\n调用此函数不建议指定选项参数 crypt.bin.encodeUrlBase64(.(数据,长度,允许补等号) = UrlBase64 编码,crypt.encodeUrlBase64 函数的别名。\n参数 @1 可以指定字符串、buffer 或指针。\n如果参数 @1 是指针则应同时指定长度参数,否则长度参数可省略。\n\n返回字符串不包含用于尾部对齐的等号,\n并且 `+` 替换为`-`,`/`替换为`_`,\n以保证作为 URL参数安全传输。 crypt.bin.decodeUrlBase64(.(数据,长度) = UrlBase64 解码,crypt.decodeUrlBase64 函数的别名。\n参数 @1 可以指定字符串、buffer 或指针。\n如果参数 @1 是指针则应同时指定长度参数,否则长度参数可省略。 crypt.bin.encodeHex(.(数据,长度,选项) = 16 进制编码,移除返回字符串尾部回车换行。\n参数 @1 可指定字符串或 buffer。\n返回的 16 进制编码以空格为分隔符。\n如果不需要分隔符请改用内置库 string.hex(data,prefix) 编码并省略 prefix 参数。 crypt.bin.decodeHex(.(字符串,长度,选项) = 16 进制解码。\n调用此函数不建议指定选项参数。\n\调用内置库函数 string.unhex(data,prefix) 并将 prefix 参数指定为空格可实现相同功能。 crypt.bin.base64DataUrl(.(字符串,MIME) = 返回 Base64 格式 Data URL\n\n也可以调用 inet.urlData(data,path,mime) 生成 Data URL,\n区别是 inet.urlData 省略 mime 则自 path (可指定不存在路径)获取 mime。 crypt.bin.decodeBase64DataUrl( = 解析 Data URL 并返回解析后数据。\n此函数功能与 inet.urlData.parse 函数功能相同。 crypt.bin.decodeBase64DataUrl(.(url) = 如果参数不是字符串返回 null 。\n如果参数是 Data URL,返回解析后的数据与 MIME。\如果数据由 base64 编码则自动解码。 _CRYPT_STRING_BASE64HEADER=@0/*_CRYPT_STRING_BASE64HEADER*/ _CRYPT_STRING_BASE64=@1/*_CRYPT_STRING_BASE64*/ _CRYPT_STRING_BINARY=@2/*_CRYPT_STRING_BINARY*/ _CRYPT_STRING_BASE64REQUESTHEADER=@3/*_CRYPT_STRING_BASE64REQUESTHEADER*/ _CRYPT_STRING_HEX=@4/*_CRYPT_STRING_HEX*/ _CRYPT_STRING_HEXASCII=@5/*_CRYPT_STRING_HEXASCII*/ _CRYPT_STRING_BASE64_ANY=@6/*_CRYPT_STRING_BASE64_ANY*/ _CRYPT_STRING_ANY=@7/*_CRYPT_STRING_ANY*/ _CRYPT_STRING_HEX_ANY=@8/*_CRYPT_STRING_HEX_ANY*/ _CRYPT_STRING_BASE64X509CRLHEADER=@9/*_CRYPT_STRING_BASE64X509CRLHEADER*/ _CRYPT_STRING_HEXADDR=@0xA/*_CRYPT_STRING_HEXADDR*/ _CRYPT_STRING_HEXASCIIADDR=@0xB/*_CRYPT_STRING_HEXASCIIADDR*/ _CRYPT_STRING_HEXRAW=@0xC/*_CRYPT_STRING_HEXRAW*/ _CRYPT_STRING_HASHDATA=@0x10000000/*_CRYPT_STRING_HASHDATA*/ _CRYPT_STRING_STRICT=@0x20000000/*_CRYPT_STRING_STRICT*/ _CRYPT_STRING_NOCRLF=@0x40000000/*_CRYPT_STRING_NOCRLF*/ _CRYPT_STRING_NOCR=@0x80000000/*_CRYPT_STRING_NOCR*/ end intellisense**/