Sample code for 30+ languages & platforms
Objective-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 Objective-C Downloads

Objective-C
#import <NSString.h>
#import <CkoBinData.h>

BOOL success = NO;

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

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

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

CkoBinData *bd = [[CkoBinData alloc] init];
success = [bd AppendEncoded: qr encoding: @"base64"];

int index = 0;
int expectedTag = 1;
int tag;
int len;
NSString *tagValue = 0;

while ((expectedTag <= 9)) {

    // Get the tag
    tag = [[bd GetByte: [NSNumber numberWithInt: index]] intValue];
    if (tag != expectedTag) {
        NSLog(@"%@%d",@"Expected tag ",expectedTag);
        return;
    }

    index = index + 1;
    len = [[bd GetByte: [NSNumber numberWithInt: index]] intValue];
    if (len == 0) {
        NSLog(@"%@",@"Expected length > 0");
        return;
    }

    index = index + 1;
    // Tags 8 and 9 contain binary data.
    if (expectedTag >= 8) {
        tagValue = [bd GetEncodedChunk: [NSNumber numberWithInt: index] numBytes: [NSNumber numberWithInt: len] encoding: @"base64"];
    }
    else {
        tagValue = [bd GetTextChunk: [NSNumber numberWithInt: index] numBytes: [NSNumber numberWithInt: len] charset: @"utf-8"];
    }

    NSLog(@"%@%d%@%@",@"tag ",tag,@": ",tagValue);

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