public static string Decode(byte[] encode) { string binary = ""; foreach (var item in encode) { binary += Convert.ToString(item, 2).PadLeft(8, '0'); } while (binary.Length % 6 != 0) { binary = "0" + binary; } var sixPadBitbinaryArray = Enumerable.Range(0, binary.Length / 6). Select(pos => binary.Substring(pos * 6, 6) ).ToArray(); StringBuilder result = new StringBuilder(); int count = 0; foreach (var item in sixPadBitbinaryArray) { string element = Convert.ToInt32(item, 2).ToString("X").PadLeft(2, '0'); if (element == "00" && count == 0) { count++; continue; } count++; result.Append(referenceTable.GetChar(element[0].ToString(), element[1].ToString())); } return(result.ToString()); }