1.从十六进制转换为十进制
/// <summary> /// 十六进制转换到十进制 /// </summary> /// <param name="hex"></param> /// <returns></returns> public static string Hex2Ten(string hex) { int ten = 0; for (int i = 0, j = hex.Length - 1; i < hex.Length; i++) { ten += HexChar2Value(hex.Substring(i, 1)) * ((int)Math.Pow(16, j)); j--; } return ten.ToString(); } public static int HexChar2Value(string hexChar) { switch (hexChar) { case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": return Convert.ToInt32(hexChar); case "a": case "A": return 10; case "b": case "B": return 11; case "c": case "C": return 12; case "d": case "D": return 13; case "e": case "E": return 14; case "f": case "F": return 15; default: return 0; } }
this.txtStartShi.Text = Hex2Ten(this.txtStartSN.Text.Trim().Substring(4, 8)); this.txtEndShi.Text = Hex2Ten(this.txtEndSN.Text.Trim().Substring(4, 8));
2.从十进制转换为十六进制
/// <summary> /// 从十进制转换到十六进制 /// </summary> /// <param name="ten"></param> /// <returns></returns> public static string Ten2Hex(string ten) { ulong tenValue = Convert.ToUInt64(ten); ulong divValue, resValue; string hex = ""; do { //divValue = (ulong)Math.Floor(tenValue / 16); divValue = (ulong)Math.Floor((decimal)(tenValue / 16)); resValue = tenValue % 16; hex = tenValue2Char(resValue) + hex; tenValue = divValue; } while (tenValue >= 16); if (tenValue != 0) hex = tenValue2Char(tenValue) + hex; return hex; } public static string tenValue2Char(ulong ten) { switch (ten) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: return ten.ToString(); case 10: return "A"; case 11: return "B"; case 12: return "C"; case 13: return "D"; case 14: return "E"; case 15: return "F"; default: return ""; } }
int StartSN = Convert.ToInt32(this.txtStartShi.Text.Trim()); int EndSN = Convert.ToInt32(this.txtEndShi.Text.Trim()); for (int i = 0; i < EndSN - StartSN + 1; i++) { listBox1.Items.Add("0014" + Ten2Hex((Convert.ToDouble(this.txtStartShi.Text) + i).ToString())); }
C# 十进制与十六进制互转
时间: 2024-11-02 09:35:07