PureBasic
PureBasic
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 PureBasic Downloads
IncludeFile "CkBinData.pb"
Procedure ChilkatExample()
success.i = 0
; Note: This example requires Chilkat v9.5.0.92 or greater.
qr.s = "ARdBaG1lZCBNb2hhbWVkIEFMIEFobWFkeQIPMzAwMDc1NTg4NzAwMDAzAxQyMDIyLTAzLTEzVDE0OjQwOjQwWgQHMTEwOC45MAUFMTQ0LjkGLCtiQTFtdWNWSTY3SDRXQ2JOL2U5SjJxVXBIVHQzVHdNZHhsa09XVGVvdjg9B2BNRVlDSVFDWWg1ZTNpcklxV2w1WXRhQ25LaXVqTUlUbW9rWFlPUE1wSURDSW9XVzc5d0loQU1YbWMrTUZIR3RhZUJzZU91RUdUbHdENmcwOWdOUVBSUHVZODlzNjVPV1MIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABNMAr2WtNWSj2uSrplhxz0cNFk/hv1LjMDgqbthcn6ydNWEuTNTQeyZJf1SfyMOFFM4cMpp+3wL+65Rj3fi+4w0JSDBGAiEAlcAzHKujzvjHJrAV1M/79RnYRqe66kmtgMUykr/N/CACIQDgTQwbfftw0pYo6FX8c63Q4edvFgt+7JhHaBlla0qRtQ=="
qr = "AQxGaXJveiBBc2hyYWYCCjEyMzQ1Njc4OTEDEzIwMjEtMTEtMTcgMDg6MzA6MDAEBjEwMC4wMAUFMTUuMDAGLDlmc3JYVW8rU3BYQVlJTkw5aGFLU2dEOXgxaVJsZk53SVBDZnBlWXczYTA9B1hYMEM4VjFIL3hUMGdOaytWWXh2U2Z6UFJlUjZPM2t5VXA0TERITzJLMzlNSGJETXVvTGltQSt3RnovV2pVdEdMSHpaK0J5enNmWUdEQzliNUFGSU1FQT09CFgwVjAQBgcqhkjOPQIBBgUrgQQACgNCAARw3B+mu14x0h3pJFKqEWWT7DmD7jWYkZV7qHyikPlN4P/4/b7YD+A9wnFI92HTKm+/BGKXVf/pfLtsmdIIaPHnCUgwRgIhAMTjOkWwcNu5Aw5k1Yr3YgbPhdxKoJV1a3+5ShPtx1/IAiEAyrwsA/NuqV6XjybyrZpMp6eJAqslACLfCldti/PVOQs="
bd.i = CkBinData::ckCreate()
If bd.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkBinData::ckAppendEncoded(bd,qr,"base64")
index.i = 0
expectedTag.i = 1
tag.i
len.i
tagValue.s
While (expectedTag <= 9)
; Get the tag
tag = CkBinData::ckGetByte(bd,index)
If tag <> expectedTag
Debug "Expected tag " + Str(expectedTag)
CkBinData::ckDispose(bd)
ProcedureReturn
EndIf
index = index + 1
len = CkBinData::ckGetByte(bd,index)
If len = 0
Debug "Expected length > 0"
CkBinData::ckDispose(bd)
ProcedureReturn
EndIf
index = index + 1
; Tags 8 and 9 contain binary data.
If expectedTag >= 8
tagValue = CkBinData::ckGetEncodedChunk(bd,index,len,"base64")
Else
tagValue = CkBinData::ckGetTextChunk(bd,index,len,"utf-8")
EndIf
Debug "tag " + Str(tag) + ": " + tagValue
index = index + len
expectedTag = expectedTag + 1
Wend
CkBinData::ckDispose(bd)
ProcedureReturn
EndProcedure