Lua Requires Chilkat v9.5.0.92+
Lua
ZATCA Decode QR Code
See more ZATCA Examples
Decodes a base64 ZATCA QR code.Chilkat Lua Downloads
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