From c7cd286be9d4ede3129a309e2668686be4646f07 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Thu, 19 Sep 2024 14:01:34 +0200 Subject: Added saving of struct to file in Zig and reading it back --- zig-struct-bin/Makefile | 2 ++ zig-struct-bin/main.zig | 35 +++++++++++++++++++++++++++++++++++ zig-struct-bin/out.bin | Bin 0 -> 8 bytes 3 files changed, 37 insertions(+) create mode 100644 zig-struct-bin/Makefile create mode 100644 zig-struct-bin/main.zig create mode 100644 zig-struct-bin/out.bin (limited to 'zig-struct-bin') diff --git a/zig-struct-bin/Makefile b/zig-struct-bin/Makefile new file mode 100644 index 0000000..98beea6 --- /dev/null +++ b/zig-struct-bin/Makefile @@ -0,0 +1,2 @@ +default: + zig test main.zig diff --git a/zig-struct-bin/main.zig b/zig-struct-bin/main.zig new file mode 100644 index 0000000..4193242 --- /dev/null +++ b/zig-struct-bin/main.zig @@ -0,0 +1,35 @@ +const std = @import("std"); + +const Sample = packed struct { + type: u16, + machine: u16, + version: u32, +}; + +test "write" { + const s = Sample{ + .type = 54, + .machine = 72, + .version = 132, + }; + + std.debug.print("{}\n", .{s}); + + var file = try std.fs.cwd().createFile("out.bin", .{}); + defer file.close(); + + try file.writeAll(std.mem.asBytes(&s)); +} + +test "read" { + var file = try std.fs.cwd().openFile("./out.bin", .{}); + defer file.close(); + + var buffer: [8]u8 = undefined; + _ = try file.read(buffer[0..]); + + const s: *Sample = @ptrCast(@alignCast(&buffer)); + std.debug.print("{}\n", .{s}); +} + +pub fn main() void {} diff --git a/zig-struct-bin/out.bin b/zig-struct-bin/out.bin new file mode 100644 index 0000000..44ae9d8 Binary files /dev/null and b/zig-struct-bin/out.bin differ -- cgit v1.2.3