delphi 函数:function RB(A: longint): longint;
begin
  Result := (A shr 24) or ((A shr 8) and $FF00) or ((A shl 8) and $FF0000) or (A shl 24);
end;
我转成C#:        private int RB(int A) {
            return (A >> 24) | ((A >> 8) & 0xFF00) | ((A << 8) & 0xFF0000) | (A << 24);
        }结果很奇怪:
我的A值为:-2143996893delphi 的结果是: 590624128
c#:-128请各位帮尽快分析一下我是否转错了,谢谢~!

解决方案 »

  1.   


    但 delphi 的结果是没有溢出的啊?
      

  2.   

    delphi是longint,你找找c#的对应类型
      

  3.   


    longint 就是 integer,对应 C# int 这个应该没有错。
      

  4.   

    在 x86 平台中,c 类语言的右移是跟整数变量的类型是否有符号有关
    而 pascal 语言不支持带符号右移的语法,也就是说,delphi 的右移只相当于 c 类语言中无符号整数的右移