I have the following code:
foreach (byte b in bytes)
{
byte inv = byte.MaxValue - b;
// Add the new value to a list....
}
When I do this I get the following error:
Cannot implicitly convert type 'int' to 'byte'. An explicit conversion exists (are you missing a cast?)
Each part of this statement is a byte. Why does C# want to convert the byte.MaxValue - b
to an int?
Shouldn't you be able to do this some how without casting? (i.e. I don't want to have to do this: byte inv = (byte) (byte.MaxValue - b);
)
According to the C# Language Reference:
because the arithmetic expression on the right-hand side of the assignment operator evaluates to int by default.
The reason for this could be because your processor is going to be faster at accessing a 4-byte memory address than a 1-byte memory address, so arithmetic operators are defined to work on 4-byte operands.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With