aardio 文档

aardio 范例: Base64

//Base64
import crypt; 

//------------------ 常规 base64 编解码 ------------------

// BASE64 编码
var b64 = crypt.encodeBin( "字符串" );

//BASE64 解码,支持 PEM,非 BASE64 文本等,可以看一看这个函数的源码
var bin = crypt.decodeBin(b64) 

print(b64,bin);

// Base64URL 编码
var b64 = crypt.encodeUrlBase64( "字符串" );

// Base64URL 解码
var bin = crypt.decodeUrlBase64(b64) 

//------------------ 高性能 base64 编解码 ------------------

/*
base64 支持库编解码的速度非常快,但程序会增加几十 KB 的大小。

一般情况建议使用 crypt.encodeBin , crypt.decodeBin 进行 Base64 编码或解码。
因为很多库引用了 crypt 库,这通常可以减少程序体积。

crypt.encodeBin , crypt.decodeBin 其实也很快,
例如编码一个图像文件基本感觉不到延时,这时候用 base64 支持库去优化意义就不大。
但如果是频繁地密集地处理较大的数据,使用 base64 支持库可以显著地提升性能。
*/

import base64

//返回字符串
var b64 = base64.encode("需要编码的字符串、buffer、或者结构体")

//解码,返回值为 buffer 类型
var buffer = base64.decode(b64);

//创建流式编码对象
var streamEncoder = base64.encoder()

streamEncoder.write("Base64") // 写字符串
streamEncoder.write(raw.buffer("真的")) // 写 buffer
streamEncoder.write({BYTES bytes[]="更快"}) // 写结构体

var b64  = streamEncoder.final()
print(b64)

//流式编码对象
var streamDecoder = base64.decoder()
for m in string.gmatch(b64 ,"."){ 
    streamDecoder.write(m)
}

print( streamDecoder.final() )
Markdown 格式