`
lovecontry
  • 浏览: 1029577 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

/// <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;

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics