Sample code for 30+ languages & platforms
Rust

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 Rust Downloads

Rust

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

let mut qr = "ARdBaG1lZCBNb2hhbWVkIEFMIEFobWFkeQIPMzAwMDc1NTg4NzAwMDAzAxQyMDIyLTAzLTEzVDE0OjQwOjQwWgQHMTEwOC45MAUFMTQ0LjkGLCtiQTFtdWNWSTY3SDRXQ2JOL2U5SjJxVXBIVHQzVHdNZHhsa09XVGVvdjg9B2BNRVlDSVFDWWg1ZTNpcklxV2w1WXRhQ25LaXVqTUlUbW9rWFlPUE1wSURDSW9XVzc5d0loQU1YbWMrTUZIR3RhZUJzZU91RUdUbHdENmcwOWdOUVBSUHVZODlzNjVPV1MIWDBWMBAGByqGSM49AgEGBSuBBAAKA0IABNMAr2WtNWSj2uSrplhxz0cNFk/hv1LjMDgqbthcn6ydNWEuTNTQeyZJf1SfyMOFFM4cMpp+3wL+65Rj3fi+4w0JSDBGAiEAlcAzHKujzvjHJrAV1M/79RnYRqe66kmtgMUykr/N/CACIQDgTQwbfftw0pYo6FX8c63Q4edvFgt+7JhHaBlla0qRtQ==".to_string();

qr = "AQxGaXJveiBBc2hyYWYCCjEyMzQ1Njc4OTEDEzIwMjEtMTEtMTcgMDg6MzA6MDAEBjEwMC4wMAUFMTUuMDAGLDlmc3JYVW8rU3BYQVlJTkw5aGFLU2dEOXgxaVJsZk53SVBDZnBlWXczYTA9B1hYMEM4VjFIL3hUMGdOaytWWXh2U2Z6UFJlUjZPM2t5VXA0TERITzJLMzlNSGJETXVvTGltQSt3RnovV2pVdEdMSHpaK0J5enNmWUdEQzliNUFGSU1FQT09CFgwVjAQBgcqhkjOPQIBBgUrgQQACgNCAARw3B+mu14x0h3pJFKqEWWT7DmD7jWYkZV7qHyikPlN4P/4/b7YD+A9wnFI92HTKm+/BGKXVf/pfLtsmdIIaPHnCUgwRgIhAMTjOkWwcNu5Aw5k1Yr3YgbPhdxKoJV1a3+5ShPtx1/IAiEAyrwsA/NuqV6XjybyrZpMp6eJAqslACLfCldti/PVOQs=".to_string();

let bd = chilkat::BinData::new();
let _ = bd.append_encoded(&qr, "base64").is_ok();

let mut index = 0;
let mut expected_tag = 1;
let mut tag: i32 = 0;
let mut len: i32 = 0;
let mut tag_value = String::new();

while expected_tag <= 9 {

    // Get the tag
    tag = bd.get_byte(index);
    if tag != expected_tag {
        println!("Expected tag {}", expected_tag);
        return;
    }

    index = index + 1;
    len = bd.get_byte(index);
    if len == 0 {
        println!("Expected length > 0");
        return;
    }

    index = index + 1;
    // Tags 8 and 9 contain binary data.
    if expected_tag >= 8 {
        tag_value = bd.get_encoded_chunk(index, len, "base64").unwrap_or_default();
    } else {
        tag_value = bd.get_text_chunk(index, len, "utf-8").unwrap_or_default();
    }

    println!("tag {}: {}", tag, tag_value);

    index = index + len;
    expected_tag = expected_tag + 1;
}