gpt4 book ai didi

c# - 编码时打包如何工作?

转载 作者:太空狗 更新时间:2023-10-30 01:13:36 25 4
gpt4 key购买 nike

我有这样的结构:

[StructLayout(LayoutKind.Sequential, Pack = 8)]
unsafe struct MyStruct_t
{
public UInt32 ulID;
public fixed Byte xValue[32];
}

然后我运行这个命令来获取尺寸:

Console.WriteLine("Marshal.SizeOf(typeof(MyStruct_t))= {0}", Marshal.SizeOf(typeof(MyStruct_t)));

答案是一致的

Marshal.SizeOf(typeof(MyStruct_t))= 36 

我本以为是 40 岁。我错过了什么吗? Pack=8 有什么不明白的地方吗?

最佳答案

来自 MSDN :

The fields of a type instance are aligned by using the following rules:

  • The alignment of the type is the size of its largest element (1, 2, 4, 8, etc., bytes) or the specified packing size, whichever is smaller.

您有一个 Pack=8,但您的最大尺寸元素是 4(UInt32)。 8 和 4 中较小的一个是 4。

如果您希望您的结构为 40 个字节,则必须添加 4 个字节的“填充”。

关于c# - 编码时打包如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49408361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com