8进制转换成10进制,但是有错误,在线等解释啊

亭子青年 2012-05-22 12:26:07

这是为什么呢?唉!我的八进制是这样的,
public static int BaToShi(string data)
{
int s;
int sum = 0;
int p = 1;
for (int i = data.Length - 1; i >= 0; i--)
{
s = Convert.ToInt16(data[i]);
s = s * p;
p = p * 8;
sum = sum + s;
}
return sum;
}
我的16进制还是这样的,怎么就不对了???求解释啊。
public static int ShiLiuToShi(string data)
{
char c;
int s;
int sum = 0;
int p = 1;
for (int i = data.Length - 1; i >= 0; i--)
{
c=data[i];
switch (c)
{
case 'A': s = 10; break;
case 'B': s = 11; break;
case 'C': s = 12; break;
case 'D': s = 13; break;
case 'E': s = 14; break;
case 'F': s = 15; break;
default: s = Convert.ToInt16(c); break;
}
s = s * p;
p = p * 16;
sum = sum + s;
}
return sum;
}


在线等你们哦。。。
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
仙剑 2012-05-22
  • 打赏
  • 举报
回复
/// <summary>
/// 十进制数转换成非十进制数
/// </summary>
/// <param name="int_value">十进制数</param>
/// <param name="mod">模</param>
/// <returns>非十进制数</returns>
public static string IntToHex(int int_value, int mod)
{
string hex_value = string.Empty;
int add_value, mod_value, temp;
char char_mod_value;
temp = int_value;
while (temp > 0)
{
add_value = temp / mod;
mod_value = temp % mod;
if (mod_value >= 10)
{
char_mod_value = (char)(mod_value + 55);
}
else
{
char_mod_value = (char)(mod_value + 48);
}
hex_value = char_mod_value + hex_value;
temp = add_value;
}
return hex_value; ;
}

/// <summary>
/// 非十进制数转换成十进制
/// </summary>
/// <param name="hex_value">非十进制数</param>
/// <param name="mod">模</param>
/// <returns>十进制数</returns>
public static int HexToInt(string hex_value, int mod)
{
int value = 0;
for (int i = 0; i < hex_value.Length; i++)
{
int asc = Convert.ToInt32(hex_value[i]);
if (asc >= 65)
{
value = value + Convert.ToInt32((asc - 55) * System.Math.Pow(Convert.ToDouble(mod), Convert.ToDouble(hex_value.Length - i - 1)));
}
else
{
value = value + Convert.ToInt32((asc - 48) * System.Math.Pow(Convert.ToDouble(mod), Convert.ToDouble(hex_value.Length - i - 1)));
}
}
return value;
}
只在此山中 2012-05-22
  • 打赏
  • 举报
回复
Convert.ToInt16(data[i]) 和 Convert.ToInt16(c) ,字符转short,'1'不是转得1,而是49,所以这要改成 Convert.ToInt16(data.Substring(i,1))

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧