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

来源:互联网 发布:unity3d 3dsmax 编辑:程序博客网 时间:2024/05/20 02:25
使用语言: 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,txtbox3button 什么的自己去弄好了.... 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);
原创粉丝点击