Xbase++
Xbase++
ZATCA Decode QR Code
See more ZATCA Examples
Decodes a base64 ZATCA QR code.Note: This example requires Chilkat v9.5.0.92 or greater.
Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL cQr
LOCAL oBd
LOCAL nIndex
LOCAL nExpectedTag
LOCAL nTag
LOCAL nLen
LOCAL cTagValue
nSuccess := 0
// Note: This example requires Chilkat v9.5.0.92 or greater.
cQr := "ARdBaG1lZCBNb2hhbWVkIEFMIEFobWFkeQIPMzAwMDc1NTg4NzAwMDAzAxQyMDIyLTAzLTEzVDE0OjQwOjQwWgQHMTEwOC45MAUFMTQ0LjkGLCtiQTFtdWNWSTY3SDRXQ2JOL2U5SjJxVXBIVHQzVHdNZHhsa09XVGVvdjg9B2BNRVlDSVFDWWg1ZTNpcklxV2w1WXRhQ25LaXVqTUlUbW9rWFlPUE1wSURDSW9XVzc5d0loQU1YbWMrTUZIR3RhZUJzZU91RUdUbHdENmcwOWdOUVBSUHVZODlzNjVPV1MIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABNMAr2WtNWSj2uSrplhxz0cNFk/hv1LjMDgqbthcn6ydNWEuTNTQeyZJf1SfyMOFFM4cMpp+3wL+65Rj3fi+4w0JSDBGAiEAlcAzHKujzvjHJrAV1M/79RnYRqe66kmtgMUykr/N/CACIQDgTQwbfftw0pYo6FX8c63Q4edvFgt+7JhHaBlla0qRtQ=="
cQr := "AQxGaXJveiBBc2hyYWYCCjEyMzQ1Njc4OTEDEzIwMjEtMTEtMTcgMDg6MzA6MDAEBjEwMC4wMAUFMTUuMDAGLDlmc3JYVW8rU3BYQVlJTkw5aGFLU2dEOXgxaVJsZk53SVBDZnBlWXczYTA9B1hYMEM4VjFIL3hUMGdOaytWWXh2U2Z6UFJlUjZPM2t5VXA0TERITzJLMzlNSGJETXVvTGltQSt3RnovV2pVdEdMSHpaK0J5enNmWUdEQzliNUFGSU1FQT09CFgwVjAQBgcqhkjOPQIBBgUrgQQACgNCAARw3B+mu14x0h3pJFKqEWWT7DmD7jWYkZV7qHyikPlN4P/4/b7YD+A9wnFI92HTKm+/BGKXVf/pfLtsmdIIaPHnCUgwRgIhAMTjOkWwcNu5Aw5k1Yr3YgbPhdxKoJV1a3+5ShPtx1/IAiEAyrwsA/NuqV6XjybyrZpMp6eJAqslACLfCldti/PVOQs="
oBd := CreateObject("Chilkat.BinData")
nSuccess := oBd:AppendEncoded(cQr, "base64")
nIndex := 0
nExpectedTag := 1
DO WHILE (nExpectedTag <= 9)
// Get the tag
nTag := oBd:GetByte(nIndex)
IF (nTag != nExpectedTag)
? "Expected tag " + Str(nExpectedTag)
oBd:destroy()
RETURN
ENDIF
nIndex := nIndex + 1
nLen := oBd:GetByte(nIndex)
IF (nLen == 0)
? "Expected length > 0"
oBd:destroy()
RETURN
ENDIF
nIndex := nIndex + 1
// Tags 8 and 9 contain binary data.
IF (nExpectedTag >= 8)
cTagValue := oBd:GetEncodedChunk(nIndex, nLen, "base64")
ELSE
cTagValue := oBd:GetTextChunk(nIndex, nLen, "utf-8")
ENDIF
? "tag " + Str(nTag) + ": " + cTagValue
nIndex := nIndex + nLen
nExpectedTag := nExpectedTag + 1
ENDDO
oBd:destroy()