代码之家  ›  专栏  ›  技术社区  ›  Rex M

c标记枚举字大小

  •  9
  • Rex M  · 技术社区  · 7 年前

    如果我宣布

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

    是否有方法确定/设置此枚举占用的字节数?另外,它将以什么字节顺序结束?(例如,我是否必须执行hosttonetwork()才能通过网络正确发送?)另外,为了调用hosttonetwork,我可以将其转换为字节数组并进行迭代吗?

    2 回复  |  直到 17 年前
        1
  •  10
  •   Mehrdad Afshari    17 年前
    [Flags]
    public enum MyColor : byte // sets the underlying type.
    {
        Red = 0;
        Green = 1;
        Blue = 2;
        White = 4;
        Magenta = 8;
        ... (etc)
    }
    

    不能直接设置endianness。您可以使用一些精心设计的数字来模拟小endian系统中的big endian字节。但是,我总是使用显式API来转换字节顺序。

        2
  •  6
  •   Andy    17 年前

    完整答案是:

    • 是否有方法确定/设置此枚举占用的字节数?

    对:

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

    不管它是在什么地方编译的,所以对于我来说,x86(小)。

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

    这就是问题所在。我发现了一些事情: