AsciiToCharReplacer.cs 4.2 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BLL
{
    public class AsciiToCharReplacer
    {
        Dictionary<int, string> asciiToMCS = new Dictionary<int, string>
{
    { 0, "NUL" },   // 空字符(Null)
    { 1, "SOH" },   // 报头开始(Start of Heading)
    { 2, "STX" },   // 正文开始(Start of Text)
    { 3, "ETX" },   // 正文结束(End of Text)
    { 4, "EOT" },   // 传输结束(End of Transmission)
    { 5, "ENQ" },   // 请求(Enquiry)
    { 6, "ACK" },   // 确认(Acknowledge)
    { 7, "BEL" },   // 响铃(Bell)
    { 8, "BS" },    // 退格(Backspace)
    { 9, "HT" },    // 水平制表符(Horizontal Tab)
    { 10, "LF" },   // 换行符(Line Feed)
    { 11, "VT" },   // 垂直制表符(Vertical Tab)
    { 12, "FF" },   // 换页符(Form Feed)
    { 13, "CR" },   // 回车符(Carriage Return)
    { 14, "SO" },   // 转义开始(Shift Out)
    { 15, "SI" },   // 转义结束(Shift In)
    { 16, "DLE" },  // 数据链路转义(Data Link Escape)
    { 17, "DC1" },  // 设备控制1(Device Control 1)
    { 18, "DC2" },  // 设备控制2(Device Control 2)
    { 19, "DC3" },  // 设备控制3(Device Control 3)
    { 20, "DC4" },  // 设备控制4(Device Control 4)
    { 21, "NAK" },  // 拒绝接收(Negative Acknowledgment)
    { 22, "SYN" },  // 同步空闲(Synchronous Idle)
    { 23, "ETB" },  // 传输块结束(End of Transmission Block)
    { 24, "CAN" },  // 取消(Cancel)
    { 25, "EM" },   // 媒介结束(End of Medium)
    { 26, "SUB" },  // 替代(Substitute)
    { 27, "ESC" },  // 转义(Escape)
    { 28, "FS" },   // 文件分隔符(File Separator)
    { 29, "GS" },   // 组分隔符(Group Separator)
    { 30, "RS" },   // 记录分隔符(Record Separator)
    { 31, "US" },   // 单元分隔符(Unit Separator)
    { 32, "SP" },   // 空格(Space)
    { 33, "!" },    // 感叹号
    { 34, "\"" },   // 双引号
    { 35, "#" },    // 井号
    { 36, "$" },    // 美元符号
    { 37, "%" },    // 百分号
    { 38, "&" },    // 和号
    { 39, "'" },    // 单引号
    { 40, "(" },    // 左括号
    { 41, ")" },    // 右括号
    { 42, "*" },    // 星号
    { 43, "+" },    // 加号
    { 44, "," },    // 逗号
    { 45, "-" },    // 减号
    { 46, "." },    // 句号
    { 47, "/" },    // 斜杠
    { 48, "0" },    // 数字0
    { 49, "1" },    // 数字1
    { 50, "2" },    // 数字2
    { 51, "3" },    // 数字3
    { 52, "4" },    // 数字4
    { 53, "5" },    // 数字5
    { 54, "6" },    // 数字6
    { 55, "7" },    // 数字7
    { 56, "8" },    // 数字8
    { 57, "9" },    // 数字9
    { 58, ":" },    // 冒号
    { 59, ";" },    // 分号
    { 60, "<" },    // 小于号
    { 61, "=" },    // 等于号
    { 62, ">" },    // 大于号
    { 63, "?" }     // 问号
};

        /// <summary>
        /// 将string字符中的隐藏字符显示为ascii码
        /// </summary>
        /// <returns></returns>
        public  string StringToAscii(string str,out string[] strings) 
        {
            List<string> result = new List<string>();
            foreach (var kvp in asciiToMCS)
            {
                string formattedValue = $"[{kvp.Value}]";
                result.Add(formattedValue);
            }

            // 将结果转换为字符串数组
            strings = result.ToArray();
            string output = "";
            foreach (char car in str)
            {
                if (char.IsControl(car))
                {
                    int i = car;
                    output += $"[{asciiToMCS[i]}]";
                }
                else
                {
                    output += car.ToString();
                }
            }
            return output;  
        }

        public string AsciiToString(string str)
        {
           
            string outup = str;
            foreach (var kvp in asciiToMCS)
            {
                outup = outup.Replace($"[{kvp.Value}]", ((char)kvp.Key).ToString());
            }          
            return outup;
        }
    }
}