Sample code for 30+ languages & platforms
Zig

Append Big-Endian or Little-Endian Integers

Demonstrates how to append integers in big-endian or little-endian byte order to a BinData.

Note: This example requires Chilkat v9.5.0.77 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();

    const bd = try chilkat.BinData.init();
    defer bd.deinit();

    // The hex value of decimal 123456789 is 0x075BCD15
    var x: i32 = 123456789;

    // Appending little-endian causes bytes to be
    // appended in the order 0x15, 0xCD, 0x5B, 0x07
    var little_endian: bool = true;
    try bd.appendInt4(x, little_endian);

    std.debug.print("{s}\n", .{try bd.getEncoded(alloc, "hex")});
    // Output is: 15CD5B07

    // Now append the same integer in big-endian byte order.
    // Appending bit-endian causes bytes to be
    // appended in the order 0x07, 0x5B, 0xCD, 0x15
    little_endian = false;
    bd.appendInt4(x, little_endian) catch {};

    std.debug.print("{s}\n", .{try bd.getEncoded(alloc, "hex")});
    // bd now contains: 15CD5B07075BCD15

    // -------------------------------------------
    // Now do the same thing with 16-bit integers
    bd.clear() catch {};

    // 1234 decimal = 0x04D2 hex.
    x = 1234;

    little_endian = true;
    bd.appendInt2(x, little_endian) catch {};

    std.debug.print("{s}\n", .{try bd.getEncoded(alloc, "hex")});
    // Output is: D204

    little_endian = false;
    bd.appendInt2(x, little_endian) catch {};

    std.debug.print("{s}\n", .{try bd.getEncoded(alloc, "hex")});
    // Output is now: D20404D2
}