求把这段C#代码改写成C语言

public static string NumToIp(string sim)
{
string[] Temp = new string[4];
int iHigt;
switch (sim.Length)
{
case 11:
Temp[0] = sim.Substring(3, 2);
Temp[1] = sim.Substring(5, 2);
Temp[2] = sim.Substring(7, 2);
Temp[3] = sim.Substring(9, 2);
iHigt = Convert.ToInt32(sim.Substring(1, 2)) - 30;
break;
case 10:
Temp[0] = sim.Substring(2, 2);
Temp[1] = sim.Substring(4, 2);
Temp[2] = sim.Substring(6, 2);
Temp[3] = sim.Substring(8, 2);
iHigt = Convert.ToInt32(sim.Substring(0, 2)) - 30;
break;
case 9:
Temp[0] = sim.Substring(1, 2);
Temp[1] = sim.Substring(3, 2);
Temp[2] = sim.Substring(5, 2);
Temp[3] = sim.Substring(7, 2);
iHigt = Convert.ToInt32(sim.Substring(0, 1));
break;
default:
switch (sim.Length)
{
case 8:
return NumToIp("140" + sim);
case 7:
return NumToIp("1400" + sim);
case 6:
return NumToIp("14000" + sim);
case 5:
return NumToIp("140000" + sim);
case 4:
return NumToIp("1400000" + sim);
case 3:
return NumToIp("14000000" + sim);
case 2:
return NumToIp("140000000" + sim);
case 1:
return NumToIp("1400000000" + sim);
default:
return "";
}

}
int[] sIp = new int[4];

if ((iHigt & 0x08) != 0)
sIp[0] = Convert.ToInt32(Temp[0]) | 128;
else
sIp[0] = Convert.ToInt32(Temp[0]);

if ((iHigt & 0x04) != 0)
sIp[1] = Convert.ToInt32(Temp[1]) | 128;
else
sIp[1] = Convert.ToInt32(Temp[1]);

if ((iHigt & 0x02) != 0)
sIp[2] = Convert.ToInt32(Temp[2]) | 128;
else
sIp[2] = Convert.ToInt32(Temp[2]);

if ((iHigt & 0x01) != 0)
sIp[3] = Convert.ToInt32(Temp[3]) | 128;
else
sIp[3] = Convert.ToInt32(Temp[3]);

return sIp[0].ToString("X2") + "." + sIp[1].ToString("X2") + "." + sIp[2].ToString("X2") + "." + sIp[3].ToString("X2");
}

这个你需要告诉我这函数的作用。 有substring截取子字符串的操作,因为C语言没有string类型,处理起来稍显麻烦。但是知道程序每一步的意思翻译起来也不难。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-14
C#和C差别还是挺大的,不一定能改写成功
相似回答