模組: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}}
    輸出→維基百科,自由的百科全書