I want to create a 32
bit integer programmatically from four byte
s in hex such as:
Lowest byte is AA
Middle byte is BB
Other middle byte is CC
Highest byte is DD
I want to use the variable names for that where:
byte myByte_1 = 0xAA
byte myByte_2 = 0xBB
byte myByte_3 = 0xCC
byte myByte_4 = 0xDD
So by using the above bytes and using bitwise operations how can we obtain: 0xDDAABBCC
?
You can construct such int
explicitly with a help of bit operations:
int result = myByte_4 << 24 |
myByte_3 << 16 |
myByte_2 << 8 |
myByte_1;
please, note that we have an integer overflow and result
is a negative number:
Console.Write($"{result} (0x{result:X})");
Outcome;
-573785174 (0xDDCCBBAA)
BitConverter
is an alternative, which is IMHO too wordy:
int result = BitConverter.ToInt32(BitConverter.IsLittleEndian
? new byte[] { myByte_1, myByte_2, myByte_3, myByte_4 }
: new byte[] { myByte_4, myByte_3, myByte_2, myByte_1 });