Hello,
the code below(in C++) is what I am trying the convert into C#
DWORD Func_X_4(DWORD arg1, DWORD arg2, DWORD arg3)
{
LARGE_INTEGER result = {1, 0};
LARGE_INTEGER temp1 = {0};
LARGE_INTEGER temp2 = {0};
LARGE_INTEGER temp3 = {0};
LARGE_INTEGER temp4 = {0};
for(int x = 0; x < 32; ++x)
{
if(arg2 & 1)
{
temp1.LowPart = arg3;
temp1.HighPart = 0;
temp2.QuadPart = temp1.QuadPart * result.QuadPart;
temp3.LowPart = arg1;
temp3.HighPart = 0;
temp4.QuadPart = temp2.QuadPart % temp3.QuadPart;
result.QuadPart = temp4.QuadPart;
}
arg2 >>= 1;
temp1.LowPart = arg3;
temp1.HighPart = 0;
temp1.QuadPart *= temp1.QuadPart;
temp2.LowPart = arg1;
temp2.HighPart = 0;
temp3.QuadPart = temp1.QuadPart % temp2.QuadPart;
arg3 = temp3.LowPart;
if(!arg2)
break;
}
return result.LowPart;
}
Here I tried to translate the code,but it's too messy and I never worked with Large integers before.
Structure:
public struct LARGE_INTEGER
{
UInt32 LowPart;
Int32 HighPart;
Int32 QuadPart;
}
Translated function:
public Int32 Func_X_4(Int32 arg1, Int32 arg2, Int32 arg3)
{
LARGE_INTEGER result = {1, 0}; //this and the four below,are they correct?
LARGE_INTEGER temp1 = {0, 0};
LARGE_INTEGER temp2 = {0, 0};
LARGE_INTEGER temp3 = {0, 0};
LARGE_INTEGER temp4 = {0, 0};
for(int x = 0; x < 32; ++x)
{
if(arg2 & 1==0) //correct?
{
temp1.LowPart = arg3;
temp1.HighPart = 0;
temp2.QuadPart = temp1.QuadPart * result.QuadPart;
temp3.LowPart = arg1;
temp3.HighPart = 0;
temp4.QuadPart = temp2.QuadPart % temp3.QuadPart;
result.QuadPart = temp4.QuadPart;
}
arg2 >>= 1;
temp1.LowPart = arg3;
temp1.HighPart = 0;
temp1.QuadPart *= temp1.QuadPart;
temp2.LowPart = arg1;
temp2.HighPart = 0;
temp3.QuadPart = temp1.QuadPart % temp2.QuadPart;
arg3 = temp3.LowPart;
if(arg2 != 0) //correct?
break;
}
return result.LowPart;
}
Problems: The first problem is that I haven't found a LARGE_INTEGER type variable in C#,so I created a strucure,I'd like to know if there is actually. As for the second problem,the function is not right,nothing worked.
Any help on that particular question will be greatfuly appreciated! Thank you in advance.