Module:Str2code:修订间差异

此后如竟没有炬火,我便是唯一的光。
跳转到导航 跳转到搜索
(雨音浅夏移动页面Module:UnicodeModule:Str2code,不留重定向)
无编辑摘要
 
第2行: 第2行:
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs


function p.str2code(strin)
function p.str2code(strin) --转换字符到unicode码位,仅支持第一平面字符
if(math.modf(string.byte(strin,1)/16)==14)then
if(math.modf(string.byte(strin,1)/16)==14)then
return (string.byte(strin,1)-224)*4096+(string.byte(strin,2)-128)*64+(string.byte(strin,3)-128)
return (string.byte(strin,1)-224)*4096+(string.byte(strin,2)-128)*64+(string.byte(strin,3)-128)
第12行: 第12行:
end
end


function p.string2code(frame)
function p.string2code(frame) --输出为十进制,可用于后续计算
local args = getArgs(frame)
local args = getArgs(frame)
local text = args[1]
local text = args[1]
第18行: 第18行:
end
end


function p.string2xcode(frame)
function p.string2xcode(frame) --输出为十六进制
local args = getArgs(frame)
local args = getArgs(frame)
local text = args[1]
local text = args[1]

2023年4月15日 (六) 23:16的最新版本

可在Module:Str2code/doc创建此模块的帮助文档

local p = {}
local getArgs = require('Module:Arguments').getArgs

function p.str2code(strin)  --转换字符到unicode码位,仅支持第一平面字符
    if(math.modf(string.byte(strin,1)/16)==14)then
        return (string.byte(strin,1)-224)*4096+(string.byte(strin,2)-128)*64+(string.byte(strin,3)-128)
    elseif(math.modf(string.byte(strin,1)/32)==6)then
        return (string.byte(strin,1)-192)*64+(string.byte(strin,2)-128)
    else
        return string.byte(strin,1)
    end
end

function p.string2code(frame)  --输出为十进制,可用于后续计算
	local args = getArgs(frame)
	local text = args[1]
    return string.format("%d",p.str2code(text))
end

function p.string2xcode(frame)  --输出为十六进制
	local args = getArgs(frame)
	local text = args[1]
    return string.format("%x",p.str2code(text))
end

return p