我正在尝试将 转换u8
为打包结构。Builtin 函数@bitCast
似乎是完成这项工作的工具。
根据文档,它应该让我改变类型但保持位表示。
我还在博客文章中找到了一个我想要实现的示例。
const std = @import("std");
const print = std.debug.print;
const mystruct = packed struct {
a : u16,
b : u16,
};
pub fn main() void {
const s2 :mystruct = .{ .a = 10, .b = 20};
const s3 : u32 = @bitCast(u32, s2);
const s4 : mystruct = @bitCast(mystruct, s3);
print("{}\n", .{ s4});
}
然而,无论我尝试什么,编译器总是告诉我@bitCast 只接受一个参数,而上面的示例和文档明确列出它需要两个参数。
例如,运行上述代码时,编译器告诉我:
src/main.zig:90:22: error: expected 1 argument, found 2
const s3 : u32 = @bitCast(u32, s2);
^~~~~~~~~~~~~~~~~
我做错了什么?对我来说,@bitCast 需要两个参数是完全合理的。
我正在使用 Zig 0.13.0。