Sample code for 30+ languages & platforms
Lua Requires Chilkat v9.5.0.92+

ZATCA Decode QR Code

See more ZATCA Examples

Decodes a base64 ZATCA QR code.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

local qr = "AQxGaXJveiBBc2hyYWYCCjEyMzQ1Njc4OTEDEzIwMjEtMTEtMTcgMDg6MzA6MDAEBjEwMC4wMAUFMTUuMDAGLDlmc3JYVW8rU3BYQVlJTkw5aGFLU2dEOXgxaVJsZk53SVBDZnBlWXczYTA9B1hYMEM4VjFIL3hUMGdOaytWWXh2U2Z6UFJlUjZPM2t5VXA0TERITzJLMzlNSGJETXVvTGltQSt3RnovV2pVdEdMSHpaK0J5enNmWUdEQzliNUFGSU1FQT09CFgwVjAQBgcqhkjOPQIBBgUrgQQACgNCAARw3B+mu14x0h3pJFKqEWWT7DmD7jWYkZV7qHyikPlN4P/4/b7YD+A9wnFI92HTKm+/BGKXVf/pfLtsmdIIaPHnCUgwRgIhAMTjOkWwcNu5Aw5k1Yr3YgbPhdxKoJV1a3+5ShPtx1/IAiEAyrwsA/NuqV6XjybyrZpMp6eJAqslACLfCldti/PVOQs="

local bd = chilkat.BinData.new()
local success = bd:append_encoded(qr, "base64")

local index = 0
local expectedTag = 1
local tag = 0
local len = 0
local tagValue = ""

while expectedTag <= 9 do
    -- Get the tag
    tag = bd:get_byte(index)
    if tag ~= expectedTag then
        print("Expected tag " .. expectedTag)
        return
    end

    index = index + 1
    len = bd:get_byte(index)
    if len == 0 then
        print("Expected length > 0")
        return
    end

    index = index + 1
    -- Tags 8 and 9 contain binary data.
    if expectedTag >= 8 then
        tagValue = bd:get_encoded_chunk(index, len, "base64")
    else
        tagValue = bd:get_text_chunk(index, len, "utf-8")
    end

    print("tag " .. tag .. ": " .. tagValue)

    index = index + len
    expectedTag = expectedTag + 1
end