class Program { static void Main(string[] args) { var fileTxt = File.ReadAllText(@"D:REPORT_WIP_20201103.CSV"); var decodeTxt = UuencodeDecode(fileTxt); Console.WriteLine(decodeTxt); } private static string UuencodeDecode(string encTxt) { StringBuilder stringBuilder = new StringBuilder(); string[] lines = encTxt.Split(new string[] { " " }, StringSplitOptions.None); //排除首行begin 尾行end for (int i = 1; i < lines.Length - 1; i++) { if (lines[i].Length > 0) { byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(lines[i].Substring(1)); stringBuilder.Append(UuencodeDecodeByByte(byteArray)); } } return stringBuilder.ToString(); } private static string UuencodeDecodeByByte(byte[] bytes) { List<char> list = new List<char>(); List<byte> bits = new List<byte>(); for (int i = 0; i < bytes.Length; i++) { var strX2 = Convert.ToString(bytes[i] - 32, 2).PadLeft(6, '0'); //"`"ASCII 96-32=64 toX2 1000000 (7位)截取后6位 if (strX2.Length > 6) { strX2 = strX2.Substring(strX2.Length - 6, 6); } list.AddRange(strX2.ToCharArray()); } int iGroupNum = list.Count / 8; for (int i = 0; i < iGroupNum; i++) { string strX2 = new string(value: list.Skip(8 * i).Take(8).ToArray()); bits.Add((byte)(Convert.ToInt32(strX2, 2))); } return System.Text.Encoding.ASCII.GetString(bits.ToArray()); } }