C#标记枚举字大小

时间:2009-08-21 23:09:10

标签: c# attributes

如果我宣布

[Flags]
public enum MyColor
{
    Red = 1;
    Green = 2;
    Blue = 4;
    White = 8;
    Magenta = 16;
    ... (etc)
}

有没有办法确定/设置此枚举占用的字节数?它还会以什么字节顺序结束? (例如,我是否必须通过线路正确发送HostToNetwork()?)另外,为了调用HostToNetwork,我可以转换为字节数组并进行迭代吗?

2 个答案:

答案 0 :(得分:10)

[Flags]
public enum MyColor : byte // sets the underlying type.
{
    Red = 0;
    Green = 1;
    Blue = 2;
    White = 4;
    Magenta = 8;
    ... (etc)
}

无法直接设置字节序。您可以使用一些精心设计的数字来模拟小端系统上的大端字节。但是,我总是使用显式API来转换字节顺序。

答案 1 :(得分:6)

完整答案是:

  • 有没有办法确定/设置此枚举占用的字节数?

是:

[Flags]
public enum MyColor : byte // sets the underlying type.
{
    Red = 1;
    Green = 2;
    Blue = 4;
    White = 8;
    Magenta = 16;
    ... (etc)
}
  • 另外,它会以什么字节顺序结束?

无论编译什么,所以对于我的情况,x86(小)。

  • 另外,为了调用HostToNetwork,我可以转换为字节数组并进行迭代吗?

这是一个棘手的地方。我发现了一些事情: