我有一段这样的C程序,应该是C的,但我转换为C#时几乎每行都有错误,
大家帮帮手,看看如何转到C#,分不够的可以再加int __usercall sub_401334<eax>(int a1<ebx>)
{
int result; // eax@2
int v2; // ecx@3
char v3; // al@4
int v4; // eax@6
int v5; // eax@7 if ( a1 )
{
v2 = a1;
if ( !(a1 & 3) )
goto LABEL_6;
do
{
v3 = *(_BYTE *)v2++;
if ( !v3 )
return v2 - 1 - a1;
}
while ( v2 & 3 );
while ( 1 )
{
do
{
LABEL_6:
v4 = (*(_DWORD *)v2 + 2130640639) ^ ~*(_DWORD *)v2;
v2 += 4;
}
while ( !(v4 & 0x81010100) );
v5 = *(_DWORD *)(v2 - 4);
if ( !(_BYTE)v5 )
break;
if ( !BYTE1(v5) )
return v2 - 3 - a1;
if ( !(v5 & 0xFF0000) )
return v2 - 2 - a1;
if ( !(v5 & 0xFF000000) )
return v2 - 1 - a1;
}
result = v2 - 4 - a1;
}
else
{
result = 0;
}
return result;
}
大家帮帮手,看看如何转到C#,分不够的可以再加int __usercall sub_401334<eax>(int a1<ebx>)
{
int result; // eax@2
int v2; // ecx@3
char v3; // al@4
int v4; // eax@6
int v5; // eax@7 if ( a1 )
{
v2 = a1;
if ( !(a1 & 3) )
goto LABEL_6;
do
{
v3 = *(_BYTE *)v2++;
if ( !v3 )
return v2 - 1 - a1;
}
while ( v2 & 3 );
while ( 1 )
{
do
{
LABEL_6:
v4 = (*(_DWORD *)v2 + 2130640639) ^ ~*(_DWORD *)v2;
v2 += 4;
}
while ( !(v4 & 0x81010100) );
v5 = *(_DWORD *)(v2 - 4);
if ( !(_BYTE)v5 )
break;
if ( !BYTE1(v5) )
return v2 - 3 - a1;
if ( !(v5 & 0xFF0000) )
return v2 - 2 - a1;
if ( !(v5 & 0xFF000000) )
return v2 - 1 - a1;
}
result = v2 - 4 - a1;
}
else
{
result = 0;
}
return result;
}
解决方案 »
- 索引超过数组界限问题
- GridControl 页脚问题
- .net里面,接口使用有没有什么规则?
- 序列化Serializable是什么用的?取消后程序能正常运行吗?
- 在.net中如何设置一个控件在窗体中显示的优先级???
- c#调用delphi写的DLL的问题
- 请教C#与SQL server2005连接问题
- 数据库查询以及置顶
- [winform] 帮忙找回textbox控件的光标位置,对它Text.Substring(...)后。
- 请问有没有人做过MSN方面的程序(发送和接收文件)?
- c#中如何添加控件mscomm,我想做串口方面的东西!
- toolStripContainer中拖动toolStrip,toolStripContainer大小变化
我也玩过VB的,但看那些程序码,不象呀,
还有,如果是,那方法是什么,有无方法,我还真的没有了解过
还望指教!!
是C Pseudocode。
unsafe int __usercall sub_401334<eax>(int a1<ebx>)
{
...
}
不过你这代码似乎还得调整一下