我正在将一些ANSI C++代码移植到C#...而这现在正在扼杀我.
两项测试都有value = 6844268
.
测试代码:
value >> 12 value & 0x00000FFF
C++返回18273和29497,而C#返回1670和3948.我已经尝试了C#中的每种可能的类型组合(int,uint,long,ulong,Int64 ......),但没有去:(
C++中的原始值是unsigned int.有人有主意吗?
编辑:唉,我弄乱了我的调试.正在查看数组[值]而不是值.我的错.
检查您的C++定义是否包含重写的>>
运算符代码?
C#正在计算正确的值,你绝对100%确定你的价值是你所说的吗?
只是通过动议:
6844268 = 11010000110111101101100 >> 12 = 11010000110.111101101100 result = 11010000110 result = 2 + 4 + 128 + 512 + 1024 = 1670 18273 = 100011101100001 6844268 >> 12 = 11010000110 ^^^^ ^^^ <-- mismatches
它们没有对齐,必须有一些你在代码中没有看到的细节.