您的位置:首页 > 编程语言 > C#

C#利用字符串方法把八进制数转换为十六进制数

2009-01-07 16:28 736 查看
/// <summary>
/// 将8进制数转换成16进制数
/// </summary>
/// <param name="convertFrom">八进制数</param>
/// <returns>十六进制数</returns>
private string ConvertNumber8To16(string convertFrom)
{
string check = convertFrom.Replace("0", string.Empty).Replace("1", string.Empty).Replace("2", string.Empty).Replace("3", string.Empty).Replace("4", string.Empty).Replace("5", string.Empty).Replace("6", string.Empty).Replace("7", string.Empty);
if (check.Length > 0)
{
//errorHandle
return string.Empty;
}
string convertTo=string.Empty, convertTo2;//目标数convertTo:将八进制From转换成进制To,
//convertTo2:选转换成进制数,再转换成十六进制数
convertTo2 = ConvertNumber8To2(convertFrom);//先转化为二进制
convertTo = ConvertNumber2To16(convertTo2);
return convertTo;
}
/// <summary>
/// 将8进制转换为2进制
/// </summary>
/// <param name="convertFrom">八进制数</param>
/// <returns>二进制数</returns>
private string ConvertNumber8To2(string convertFrom)
{
string check = convertFrom.Replace("0", string.Empty).Replace("1", string.Empty).Replace("2", string.Empty).Replace("3", string.Empty).Replace("4", string.Empty).Replace("5", string.Empty).Replace("6", string.Empty).Replace("7", string.Empty);
if (check.Length > 0)
{
//errorHandle
return string.Empty;
}
string convertTo = string.Empty, bit;
for (int i = convertFrom.Length - 1; i >= 0; i--)
{
bit = convertFrom.Substring(i, 1);
switch (bit)
{
case "0":
convertTo = "000" + convertTo;
break;
case "1":
convertTo = "001" + convertTo;
break;
case "2":
convertTo = "010" + convertTo;
break;
case "3":
convertTo = "011" + convertTo;
break;
case "4":
convertTo = "100" + convertTo;
break;
case "5":
convertTo = "101" + convertTo;
break;
case "6":
convertTo = "110" + convertTo;
break;
case "7":
convertTo = "111" + convertTo;
break;
}
}
return convertTo;
}
/// <summary>
/// 将2进制转换为16进制
/// </summary>
/// <param name="convertFrom">二进制数</param>
/// <returns>十六进制数</returns>
private string ConvertNumber2To16(string convertFrom)
{
string check = convertFrom.Replace("0", string.Empty).Replace("1", string.Empty);
if (check.Length > 0)
{
//errorHandle
return string.Empty;
}
string convertTo = string.Empty, bit;
int residue,temp = 0;
for (int i = convertFrom.Length - 4; i >= 0; i-=4)
{
bit = convertFrom.Substring(i, 4);//每次减四
switch (bit)
{
case "0000":
convertTo = "0" + convertTo;
break;
case "0001":
convertTo = "1" + convertTo;
break;
case "0010":
convertTo = "2" + convertTo;
break;
case "0011":
convertTo = "3" + convertTo;
break;
case "0100":
convertTo = "4" + convertTo;
break;
case "0101":
convertTo = "5" + convertTo;
break;
case "0110":
convertTo = "6" + convertTo;
break;
case "0111":
convertTo = "7" + convertTo;
break;
case "1000":
convertTo = "8" + convertTo;
break;
case "1001":
convertTo = "9" + convertTo;
break;
case "1010":
convertTo = "A" + convertTo;
break;
case "1011":
convertTo = "B" + convertTo;
break;
case "1100":
convertTo = "C" + convertTo;
break;
case "1101":
convertTo = "D" + convertTo;
break;
case "1110":
convertTo = "E" + convertTo;
break;
case "1111":
convertTo = "F" + convertTo;
break;
}
}
residue = convertFrom.Length % 4;//求余数
if (residue != 0)
{
for (int i = 0; i < residue; i++)
{
temp += Convert.ToInt32(convertFrom.Substring(i, 1))
* Convert.ToInt32(Math.Pow(2, residue - i - 1));
}
}
if (temp != 0)
{
convertTo = temp.ToString() + convertTo;
}
return convertTo;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐