C# 字符串重编码——任意字符串转化为全字母串

来源:互联网 发布:苹果5s怎么关闭网络 编辑:程序博客网 时间:2024/06/05 20:17

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ClearDir{    public class Encoder    {        public static void example()        {            String data = "test encode";            string encode = Encode(data);            string decode = Decode(encode);            bool b = data.Equals(decode);            bool b2 = b;        }        /// <summary>        /// 转码data为全字母串,并添加前缀        /// </summary>        public static string Encode(string data)        {            string str = data;            if (!data.StartsWith("ALPHABETCODE@"))            {                str = "ALPHABETCODE@" + EncodeAlphabet(data);            }            return str;        }        /// <summary>        /// 解析字母串为原有串        /// </summary>        public static string Decode(string data)        {            string str = data;            if (data.StartsWith("ALPHABETCODE@"))            {                str = DecodeAlphabet(data.Substring("ALPHABETCODE@".Length));            }            return str;        }        # region 字符串字母编码逻辑        /// <summary>        /// 转化为字母字符串        /// </summary>        public static string EncodeAlphabet(string data)        {            byte[] B = Encoding.UTF8.GetBytes(data);            return ToStr(B);        }        /// <summary>        /// 每个字节转化为两个字母        /// </summary>        private static string ToStr(byte[] B)        {            StringBuilder Str = new StringBuilder();            foreach (byte b in B)            {                Str.Append(ToStr(b));            }            return Str.ToString();        }        private static string ToStr(byte b)        {            return "" + ToChar(b / 16) + ToChar(b % 16);        }        private static char ToChar(int n)        {            return (char)('a' + n);        }        /// <summary>        /// 解析字母字符串        /// </summary>        public static string DecodeAlphabet(string data)        {            byte[] B = new byte[data.Length / 2];            char[] C = data.ToCharArray();            for (int i = 0; i < C.Length; i += 2)            {                byte b = ToByte(C[i], C[i + 1]);                B[i / 2] = b;            }            return Encoding.UTF8.GetString(B);        }        /// <summary>        /// 每两个字母还原为一个字节        /// </summary>        private static byte ToByte(char a1, char a2)        {            return (byte)((a1 - 'a') * 16 + (a2 - 'a'));        }        # endregion    }}


原创粉丝点击