模块:EncoderUtil/doc

这是Module:EncoderUtil的文档页面

主要提供5种编码解码工具:

  • JSON编码/解码
    • 包含一个“非函数对象之深层复制”的方法
  • 简易的YAML解码
  • 二进制编码
  • QR码编码({{QR}})
  • Base64编码/解码({{Base64}})

使用方法

编码

本模块._jsonEncode

能将Lua编码为JSON的函数。与mw.text.jsonEncode不同在于,mw.text.jsonEncode遇到函数对象会出错,而本模块的_jsonEncode会将函数对象以替代符号表示而不会出错,能正常变换各种Lua对象。

不支持模板直接调用。

解码

JSON解码仅需要使用mw.text.jsonDecode即可,本模块无特别提供。

解码

本模块.yamlDecode

能将YAML解码为Lua对象。支持模板直接调用。

原始码 输出
{{#invoke:EncoderUtil|yamlDecode|
---
receipt:     Oz-Ware Purchase Invoice
date:        2012-08-06
customer:
    given:   Dorothy
    family:  Gale}}
{
  ["customer"] = {
    ["family"] = "Gale",
    ["given"] = "Dorothy"
  },
  ["date"] = 1344182400,
  ["receipt"] = "Oz-Ware Purchase Invoice"
}
本模块.yaml2json

将YAML变换为JSON。支持模板直接调用。

原始码 输出
{{#invoke:EncoderUtil|yaml2json|
---
receipt:     Oz-Ware Purchase Invoice
date:        2012-08-06
customer:
    given:   Dorothy
    family:  Gale}}
{"customer":{"given":"Dorothy","family":"Gale"},"date":1344182400,"receipt":"Oz-Ware Purchase Invoice"}

二进制资料流

本函数的功能并非设计给数字进行进制转换之用,而是资料流的编解码。若需要将数字进行进制转换,请参考Module:BaseConvertModule:BigNumber提供的convertBase函数

编码

本模块._toBinary(x,digits)

能将一整数变换成指定位数的二进制资料串。(供QR码资料串编码使用)

不支持模板直接调用。

本模块._binaryEncode(str)

能将一字符串以UTF-8的格式编码为二进制资料串。

有支持模板直接调用的函数binaryEncode

  • 原始码{{#invoke:EncoderUtil|binaryEncode|維基百科}}
    输出→111001111011011010101101111001011001111110111010111001111001100110111110111001111010011110010001
本模块._hexadecimalEncode(str)

能将一字符串以UTF-8的格式编码为十六进制资料串。

有支持模板直接调用的函数hexadecimalEncode

  • 原始码{{#invoke:EncoderUtil|hexadecimalEncode|維基百科,自由的百科全書}}
    输出→e7b6ade59fbae799bee7a791efbc8ce887aae794b1e79a84e799bee7a791e585a8e69bb8

解码

本模块._binaryDecode(bin)

一个二进制资料串解码为UTF-8格式编码的字符串。

有支持模板直接调用的函数binaryDecode

  • 原始码{{#invoke:EncoderUtil|binaryDecode|111001111011011010101101111001011001111110111010111001111001100110111110111001111010011110010001}}
    输出→維基百科
本模块._hexadecimalDecode(hex)

一个十六进制资料串解码为UTF-8格式编码的字符串。

有支持模板直接调用的函数hexadecimalDecode

  • 原始码{{#invoke:EncoderUtil|hexadecimalDecode|e7b6ade59fbae799bee7a791efbc8ce887aae794b1e79a84e799bee7a791e585a8e69bb8}}
    输出→維基百科,自由的百科全書
本模块._get_libqrcode()

初始化QR码编码程序库。此处所有函数皆不支持模板直接调用。若要让模板直接调用,请改用Module:QRModule:RegularTiling提供的API(相依于本模块)。

初始化完的程序库有以下成员:

  • license:记录函数库三句版BSD许可条款的详细资料。
  • encode_string_numeric:将纯数字字符串编码为QR码格式的二进制资料流。
  • encode_string_ascii:将纯ASCII字符串编码为QR码格式的二进制资料流。
  • encode_string_binary:将UTF-8字符串编码为QR码格式的二进制资料流。
  • encode_data:根据QR码编码模式将输入的资料编码为QR码格式的二进制资料流。
  • qrcode:生成完整QR码二维码的二进制资料流。
  • get_mode:判断输入字符串适合的QR码编码模式。
  • get_length:将资料长度信息编码为QR码格式的二进制资料流。
  • add_pad_data:生成QR码的padding bits。
  • get_generator_polynominal_adjusted
  • get_pixel_with_mask:获取QR码特定位置的掩模。
  • get_version_eclevel_mode_bistringlength
  • get_version_eclevel
  • remainder:各Ver的QR码编码时需要补余的位元数量。
  • arrange_codewords_and_calculate_ec
  • calculate_error_correction:计算纠错码
  • convert_bitstring_to_bytes:将长度为 的二进制字符串变换为长度为 的数字数组。
  • get_matrix_and_penalty
  • get_matrix_with_lowest_penalty
  • bit_xor
本模块._get_libbase64()

初始化Base64编码程序库。此处所有函数皆不支持模板直接调用。

初始化完的程序库有以下成员:

  • encode( str, encoder, usecaching ):将字符串以指定编码器编码为Base64
  • decode( b64, decoder, usecaching ):将Base64资料流以指定解码器进行解码。
  • makeencoder( s62, s63, spad ):以给定的62、63字符和指定的spad生成编码器。
  • makedecoder( s62, s63, spad ):以给定的62、63字符和指定的spad生成解码器。

编码

本模块.base64Encode(str)

将字符串编码为标准的Base64资料流。支持模板直接调用。

  • 原始码{{#invoke:EncoderUtil|base64Encode|維基百科,自由的百科全書}}
    输出→57at5Z+655m+56eR77yM6Ieq55Sx55qE55m+56eR5YWo5pu4

解码

本模块.base64Decode(b64)

将给定的Base64资料流依照标准的Base64格式进行解码。支持模板直接调用。

  • 原始码{{#invoke:EncoderUtil|base64Decode|57at5Z+655m+56eR77yM6Ieq55Sx55qE55m+56eR5YWo5pu4}}
    输出→維基百科,自由的百科全書