Sample code for 30+ languages & platforms
Zig

Ascii85 Encoding and Decoding

See more Encryption Examples

Demonstrates ascii85 encoding and decoding.

Note: Requires Chilkat v9.5.0.79 or greater.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // First demonstrate encoding strings to ascii85 and back.
    const sb = try chilkat.StringBuilder.init();
    defer sb.deinit();

    try sb.append("Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.");

    var encoded_ascii85: [:0]const u8 = try sb.getEncoded(alloc, "ascii85", "utf-8");
    std.debug.print("{s}\n", .{encoded_ascii85});

    // Result is: 9jqo^BlbD-BleB1DJ+*+F(f,q/0JhKF<GL>Cj@.4 ... DII?(E,9)oF*2M7/c

    // Decode back to the original:
    sb.clear();
    sb.append(encoded_ascii85) catch {};
    try sb.decode("ascii85", "utf-8");
    std.debug.print("Original:\n", .{});
    std.debug.print("{s}\n", .{try sb.getAsString(alloc)});

    // ---- Now encode binary data to ascii85 ----
    const bd = try chilkat.BinData.init();
    defer bd.deinit();
    try bd.loadFile("qa_data/jpg/starfish20.jpg");
    encoded_ascii85 = try bd.getEncoded(alloc, "ascii85");
    std.debug.print("{s}\n", .{encoded_ascii85});

    // Result is:  s4IA0!"_al8O`[\!<E0k!([(is8E!F7VQ[M+Eqj?FED)3+C]U=6"Fn ...

    // Decode...
    bd.clear() catch {};
    bd.appendEncoded(encoded_ascii85, "ascii85") catch {};
    try bd.writeFile("qa_output/starfish20.jpg");
}