理解这个delphi方法并将其转换为C#

Fel*_* D. 1 c# delphi bit-shift

谁能解释一下这个delphi代码在做什么?

我知道它正在转移一些但我没有达到目的..

function PKV_GetKeyByte(const Seed : Int64; a, b, c : Byte) : Byte;
    begin
        a := a mod 25;
        b := b mod 3;
        if a mod 2 = 0 then
            result := ((Seed shr a) and $000000FF) xor ((Seed shr b) or c)
        else
            result := ((Seed shr a) and $000000FF) xor ((Seed shr b) and c);
end;
Run Code Online (Sandbox Code Playgroud)

我如何将其转换为C#?

这是我到目前为止所得到的:

private byte PKV_GetKeyByte(Int64 seed, byte a, byte b, byte c)
{
    byte result;
    int aVal = a % 25;
    int bVal = b % 3;

    //IF-IS-MISSING
    if(a % 2 == 0)
    {

    }
    else
    {

    }            
    return result;
}
Run Code Online (Sandbox Code Playgroud)

Bug*_*der 5

我相信(未经测试)你想要的东西......

result := ((Seed shr a) and $000000FF) xor ((Seed shr b) or c))
Run Code Online (Sandbox Code Playgroud)

result = System.Convert.ToByte((Seed >> a) & 0x000000FF) ^ ((Seed >> b) | c));
Run Code Online (Sandbox Code Playgroud)

result := ((Seed shr a) and $000000FF) xor ((Seed shr b) and c));
Run Code Online (Sandbox Code Playgroud)

result = System.Convert.ToByte((Seed >> a) & 0x000000FF) ^ ((Seed >> b) & c));
Run Code Online (Sandbox Code Playgroud)