Compiles but shouldn't
[Flags]
enum TransactionData : long  // 64 bits.  Last bit is sign bit, but I'm putting data there
{
    None = 0,
    Color1 = 1 << 63,
}
Errors but shouldn't
[Flags]
enum TransactionData : ulong  // 64 bits. No sign bit.  Not allowed to put data there
{
    None = 0,
    Color1 = 1 << 63,
}
Compiler Error Text:
-2147483648 cannot be converted to a ulong
Question:
I would expect the opposite to occur. Can anyone explain why this is?
Also how I can print this flags attribute to a byte[] for inspection?
 var eee  = TransactionData.None | TransactionData.Color1
 // How do I convert eee to byte[]?