Sample code for 30+ languages & platforms
Unicode C++

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 Unicode C++ Downloads

Unicode C++
#include <CkBinDataW.h>

void ChilkatSample(void)
    {
    bool success = false;

    // Note: This example requires Chilkat v9.5.0.92 or greater.

    const wchar_t *qr = L"ARdBaG1lZCBNb2hhbWVkIEFMIEFobWFkeQIPMzAwMDc1NTg4NzAwMDAzAxQyMDIyLTAzLTEzVDE0OjQwOjQwWgQHMTEwOC45MAUFMTQ0LjkGLCtiQTFtdWNWSTY3SDRXQ2JOL2U5SjJxVXBIVHQzVHdNZHhsa09XVGVvdjg9B2BNRVlDSVFDWWg1ZTNpcklxV2w1WXRhQ25LaXVqTUlUbW9rWFlPUE1wSURDSW9XVzc5d0loQU1YbWMrTUZIR3RhZUJzZU91RUdUbHdENmcwOWdOUVBSUHVZODlzNjVPV1MIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABNMAr2WtNWSj2uSrplhxz0cNFk/hv1LjMDgqbthcn6ydNWEuTNTQeyZJf1SfyMOFFM4cMpp+3wL+65Rj3fi+4w0JSDBGAiEAlcAzHKujzvjHJrAV1M/79RnYRqe66kmtgMUykr/N/CACIQDgTQwbfftw0pYo6FX8c63Q4edvFgt+7JhHaBlla0qRtQ==";

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

    CkBinDataW bd;
    success = bd.AppendEncoded(qr,L"base64");

    int index = 0;
    int expectedTag = 1;
    int tag;
    int len;
    const wchar_t *tagValue = 0;

    while ((expectedTag <= 9)) {

        // Get the tag
        tag = bd.GetByte(index);
        if (tag != expectedTag) {
            wprintf(L"Expected tag %d\n",expectedTag);
            return;
        }

        index = index + 1;
        len = bd.GetByte(index);
        if (len == 0) {
            wprintf(L"Expected length > 0\n");
            return;
        }

        index = index + 1;
        // Tags 8 and 9 contain binary data.
        if (expectedTag >= 8) {
            tagValue = bd.getEncodedChunk(index,len,L"base64");
        }
        else {
            tagValue = bd.getTextChunk(index,len,L"utf-8");
        }

        wprintf(L"tag %d: %s\n",tag,tagValue);

        index = index + len;
        expectedTag = expectedTag + 1;
    }
    }