Difference between revisions of "Module:Sandbox/Erutuon/UTF-8"

From blackwiki
Jump to navigation Jump to search
blackwiki>Erutuon
(printing binary digits for characters)
 
blackwiki>Erutuon
(newbie mistake)
Line 34: Line 34:
 
     )
 
     )
 
end
 
end
 +
 +
return p

Revision as of 05:09, 17 September 2017

An experiment with printing binary digit representations of characters.

Usage

01100001 01111110 11000010 10100001 11000011 10100001 11001110 10110001 11100001 10111110 10110000 11110000 10100000 10000000 10000000



local p = {}

local bit = require("bit32")
local band = bit.band
local rshift = bit.rshift

local function getBits(byte)
    local t = {}
    for bit = 8, 1, -1 do
        t[bit] = band(byte, 1)
        byte = rshift(byte, 1)
    end
    return t
end

local function iterBytes(str, func)
    local out = {}
    for i = 1, #str do
        table.insert(out, func(string.byte(str, i)))
    end
    return out
end

function p.show(frame)
	local str = frame.args[1] or "ᾰ̓τῑμᾰ́ζω"
    return table.concat(
        iterBytes(
            str,
            function(byte)
                return table.concat(getBits(byte))
            end
        ),
        " "
    )
end

return p