在C#中int
是一个带符号的32位整数.最大值int
是2147483647
- 低于3743347868
.您执行的操作会导致溢出,从而导致负值.
如果将类型更改result
为unsigned int(uint
)或64位整数(long
),则C#代码将提供与Python相同的结果:
byte[] vals = new byte[] {223, 30, 244, 156}; uint result = 0; for(int i = 0; i <= 3; ++i) { result <<= 8; result |= vals[i]; }