将 Enum 转换为 IEnumerable 字节

Cast Enum to IEnumerable byte

给定以下枚举

enum MyEnum {
   MyVal1 = 0x0000,
   MyVal2 = 0xF0F0,
   MyVal3 = 0x1234
}

我想编写一个返回给定枚举的 IEnumerable 的方法。

IEnumerable<byte> Foo(MyEnum myEnum){
     //...
}

所以

byte[] bytes = Foo(MyEnum.MyVal1).ToArray(); //bytes == 0x0000
byte[] bytes = Foo(MyEnum.MyVal2).ToArray(); //bytes == 0xF0F0
byte[] bytes = Foo(MyEnum.MyVal3).ToArray(); //bytes == 0x1234

请指教。我正在使用 Compact Framework 3.5

实际上,您可以为此目的使用内置 BitConverter.GetBytes

IEnumerable<byte> Foo(MyEnum myEnum) {          
    return BitConverter.GetBytes((ushort)myEnum);           
}

可能您在这里要注意的唯一关键是将您的 enum 强制转换为 ushort,因为您的 enum 是 2 个字节。

另请注意,默认情况下结果将在 BitConverter.IsLittleEndian 属性 之后。如果是 true,则结果是小端,如果是 false,则结果是大端。