Tell me if you think that the numbers matching here is sufficient proof that it's the same thing (the ifs are there just in case):
int ALPHA = 255 << 24;
uint r = 1, g = 1, b = 2;
if ((r & 0xffffff00) != 0) {
r = (255u >> (int)(r >> 28 & 8));
}
if ((g & 0xffffff00) != 0) {
g = (255u >> (int)(g >> 28 & 8));
}
if ((b & 0xffffff00) != 0) {
b = (255u >> (int)(b >> 28 & 8));
}
uint fromSigned = (uint)(b | (g << 8) | (r << 16) | ALPHA);
uint fromUnsigned = b | (g << 8) | (r << 16) |4278190080u;
System.Console.WriteLine("OR from Signed: "+fromSigned +", from Unsigned: "+fromUnsigned);