这是我的结构
[StructLayout(LayoutKind.Sequential)]
public struct SystemServiceStatus {
public bool isSystemUiOverlaid;
public bool isInBackgroundExecution;
}
将两个布尔值设置为 true 时,我得到以下二进制(十六进制):
01 00 00 00 01 00 00 00
我不知道这是否是因为填充......或者我的布尔值是否被序列化为 32 位整数并以小尾数法布局。
ChatGPT 似乎非常有信心这两个布尔值应该在前两个字节中并排,但这显然是不对的。
我找到了答案。 C# 结构布局包=??用于布尔值
TLDR;处理布尔值的默认方法是作为整数,但可以通过在每个布尔值上放置 [MarshalAs(UnmanagedType.I1)] 来控制它,以强制其为一个字节。