C#文本编码ASCII,Unicode,UTF-8,UTF-7 HEX(16进制)转换算法

使用语言: C# visual studio 2008 .net framework 2.0 先定义编码: internal enum HasCode { ASCII, UNICODE, UTF_8, UTF_7, } Decoding 算法 //16进制 HEX 编码出文本的算法 public string get_Hextext(HasCode code, string text) { string str = null; if (text == null) { return str; } string pattern = "[^a-fA-F0-9]"; Regex regex = new Regex(pattern); if (!regex.Match(text).Success) { byte[] bytes = new byte[0x1000]; int length = text.Length;    int num2 = 0;    if ((length % 2) == 1) { length--; text = text.Substring(0, length); } length /= 2; for (int i = 0; i < length; i++) { num2 = (int) long.Parse(text.Substring(i * 2, 2), NumberStyles.AllowHexSpecifier); bytes[i] = (byte) num2; } switch (code) { case HasCode.ASCII: return Encoding.Default.GetString(bytes, 0, length); case HasCode.UNICODE: return Encoding.Unicode.GetString(bytes, 0, length); case HasCode.UTF_8: return Encoding.UTF8.GetString(bytes, 0, length); case HasCode.UTF_7:    return Encoding.UTF7.GetString(bytes, 0, length);    } return str; } return null; } Encoding 算法 文本转换成各种编码(16进制)的算法 public string Convert(string inputText, HasCode code) { if (inputText != null) { switch (code) { case HasCode.ASCII: { StringBuilder builder = new StringBuilder(); byte[] bytes = Encoding.Default.GetBytes(inputText); for (int i = 0; i < bytes.Length; i++) { builder = builder.Append(bytes[i].ToString("X2")); } return builder.ToString(); } case HasCode.UNICODE: { StringBuilder builder2 = new StringBuilder(); byte[] buffer2 = Encoding.Unicode.GetBytes(inputText); for (int j = 0; j < buffer2.Length; j++) { builder2 = builder2.Append(buffer2[j].ToString("X2")); } return builder2.ToString(); } case HasCode.UTF_8: { StringBuilder builder3 = new StringBuilder(); byte[] buffer3 = Encoding.UTF8.GetBytes(inputText); for (int k = 0; k < buffer3.Length; k++) { builder3 = builder3.Append(buffer3[k].ToString("X2")); } return builder3.ToString(); } case HasCode.UTF_7: { StringBuilder builder4 = new StringBuilder(); byte[] buffer4 = Encoding.UTF7.GetBytes(inputText); for (int m = 0; m < buffer4.Length; m++) { builder4 = builder4.Append(buffer4[m].ToString("X2")); } return builder4.ToString(); } } } return null; } 算法使用实例: 做个winform 上面放个 txtbox1 和txtbox2,txtbox3 button 什么的自己去弄好了.... string str; str.Text=comcode.get_Hextext(HasCode.UTF_8, this.txtbox1.Text); if (str != null) { this.txtbox2.Text = str; break; } this.txtbox2.Text = "您所输入的文本不是十六进制!"; str.Text=comcode.Convert(this.txtbox1.Text, HasCode.UTF_8); if (str != null) { this.txtbox2.Text = str; break; } this.txtbox3.Text =str.Text=GB(this.txtbox1.Text);

你可能感兴趣的:(C#文本编码ASCII,Unicode,UTF-8,UTF-7 HEX(16进制)转换算法)