I know these warnings are probably pointless.. But anyway I could get rid of them?
I got 7 of these warnings.
Bitwise-or operator used on a sign-extended operand; consider casting to a smaller unsigned type first
This has something to do with the OR operator |
I highlighted what gives off the warnings.
int result = (int)ror((uint)(v76 ^ (v75 | 0x862D63D3)), (uint)(BitConverter.ToInt32(v4, 72) ^ 0x22)); int v11 = (int)rol((uint)(int)((v8 & v10 | ~v10 & 0xEFCDAAC9) + v3[2] - 1126481991), 17); int v144 = (int)rol((uint)(int)((v141 & v143 | ~v143 & 0xEFCDAAC9) + v3[2] - 1126481991), 17); int v77 = (int)(`BitConverter.ToInt32(v4, 52) | 0x96C35837`); BitConverter.GetBytes((int)(v30 & 0x870DEA8A | v29)).CopyTo(v2, 32); int temp24 |= (int)(BitConverter.ToInt32(v3, 48) | 0x96B4A1B4); int v17 = (int)(BitConverter.ToInt32(v3, 12) | 0x83868A1D);
A quick Web search shows the official documentation for the warning, which comes with an explanation:
The compiler implicitly widened and sign-extended a variable, and then used the resulting value in a bitwise OR operation. This can result in unexpected behavior.
The problem is that the expression v75 | 0x862D63D3
is of the form int | uint
. This is computed by promoting both sides to long
. If you really want sign extension, write (ulong)(long)v75 | 0x862D63D3
. If you really want zero-extension, then write (uint)v75 |0x862D63D3
.
class Program { public static void Main() { int v75 = int.MinValue; System.Console.WriteLine("{0:x}", v75 | 0x862D63D3); System.Console.WriteLine("{0:x}", (ulong)(long)v75 | 0x862D63D3); System.Console.WriteLine("{0:x}", (uint)v75 | 0x862D63D3); } }
This program prints
ffffffff862d63d3 ffffffff862d63d3 862d63d3
As you can see, the compiler defaults to the first interpretation, which is probably not what you want.
Try casting v75 and other variables being ORed with unsigned hex values to uint:
((uint)v75 | 0x862D63D3)
or declare the variables as uint
instead of int
.
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