using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ChamChat.Models { public static class ANSI_X328 { private static List _AA_Pares = new List() { new AA_Pare("",2), new AA_Pare("",3), new AA_Pare("",4), new AA_Pare("",5), new AA_Pare("",6), new AA_Pare("",10), new AA_Pare("",13), new AA_Pare("",16), new AA_Pare("",21), new AA_Pare("",17), new AA_Pare("",19), new AA_Pare("",32), new AA_Pare("",32) }; public static string ToStringOfHexPerChar(String ANSIX328, bool Separate) { byte[] asciiBytes = Encoding.ASCII.GetBytes(ANSIX328); string result = ""; foreach (byte b in asciiBytes) { result += b.ToHex(); if (Separate) result += " "; } return result.Trim(); } public static String ToASCII(String ANSIX328) { // Remove all space. // Find Ansi code, break string at Ansi, add ascii char and reattach rest of string String result = ANSIX328.Replace(" ", ""); foreach (AA_Pare p in _AA_Pares) { while (result.Contains(p.Ansi)) { int i = result.IndexOf(p.Ansi); string pre = result.Substring(0, i); string post = result.Substring(i + p.Ansi.Length); result = pre + (char)p.Ascii + post; } } return result; } public static String ToANSI(String ASCII) { String result = ASCII; foreach (AA_Pare p in _AA_Pares) { for (int c = 0; c < result.Length; c++) { if (result.ToCharArray()[c] == (char)p.Ascii) { string pre = result.Substring(0, c); string post = result.Substring(c + 1); result = pre + p.Ansi + post; c = -1; // Test to show ASCII as decimal //result = pre + "<"+p.Ascii.ToString()+">" + post; } } } return result; } internal class AA_Pare { public AA_Pare(String Ansi, Int32 Ascii) { _Ansi = Ansi; _Ascii = Ascii; } private int _Ascii; public Int32 Ascii { get { return _Ascii; } } private string _Ansi; public String Ansi { get { return _Ansi; } } } // Old implementations, not in use anymore private static string[] _Ansi = new string[13] { "", "", "", "", "", "", "", "", "", "", "", "", "" }; private static int[] _Ascii = new int[13] { 5, 6, 16, 2, 21, 4, 3, 13, 10, 32, 19, 17, 32 }; public static String ToANSI(String ASCII, bool old) { String result = ASCII; for (int k = 0; k < _Ascii.Length; k++) { for (int c = 0; c < result.Length; c++) { if (result.ToCharArray()[c] == (char)_Ascii[k]) { string pre = result.Substring(0, c); string post = result.Substring(c + 1); result = pre + _Ansi[k] + post; // Test to show ASCII as decimal //result = pre + "<"+_Ascii[k].ToString()+">" + post; c = -1; } } } return result; } public static String ToASCII(String ANSIX328, bool old) { // Remove all space, etc. // Find Ansi code, break string at Ansi, add ascii char and reattach rest of string String result = ANSIX328.Replace(" ", ""); for (int k = 0; k < _Ansi.Length; k++) { String Ansi = _Ansi[k]; while (result.Contains(Ansi)) { int i = result.IndexOf(Ansi); string pre = result.Substring(0, i); string post = result.Substring(i + Ansi.Length); result = pre + (char)_Ascii[k] + post; } } return result; } } }