给出以下Enum
enum MyEnum {
MyVal1 = 0x0000,
MyVal2 = 0xF0F0,
MyVal3 = 0x1234
}
我想编写一个返回给定Enum的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
答案 0 :(得分:1)
实际上,您可以使用内置BitConverter.GetBytes
来实现此目的:
IEnumerable<byte> Foo(MyEnum myEnum) {
return BitConverter.GetBytes((ushort)myEnum);
}
您可能需要注意的唯一一个关键是将enum
转换为ushort
,因为enum
是2个字节。
另请注意,默认情况下,BitConverter.IsLittleEndian
属性后的结果。如果是true
,那么结果是小端,如果是false
,则结果是大端。