如何将二进制转换为字符串?

static List ConvertTextToBinary(int number, int Base) { List list = new List(); while (number!=0) { list.Add(number % Base); number = number / Base; } list.Reverse(); return list; } static void Main(string[] args) { string s = "stackoverflow"; int counter=0; while (counter!=s.Length) { int[] a = ConvertTextToBinary(s[counter], 2).ToArray(); for (int i = 0; i < a.Length; i++) { Console.Write(a[i]); } Console.Write("\n"); counter++; } } 

我写了一个方法将字符串转换为二进制,它的工作正常。 但现在我想将二进制转换为字符串,例如:1101000等于h。

 static string ConvertBinaryToText(List> seq){ return new String(seq.Select(s => (char)s.Aggregate( (a,b) => a*2+b )).ToArray()); } static void Main(){ string s = "stackoverflow"; var binary = new List>(); for(var counter=0; counter!=s.Length; counter++){ List a = ConvertTextToBinary(s[counter], 2); binary.Add(a); foreach(var bit in a){ Console.Write(bit); } Console.Write("\n"); } string str = ConvertBinaryToText(binary); Console.WriteLine(str);//stackoverflow } 

您可以将单个位集转换为字符,如下所示:

 int[] h = { 1, 1, 0, 1, 0, 0, 0 }; int result = 0; int bitValue = 1; for (int i = h.Length - 1; i >= 0 ; i--) { result += h[i] * bitValue; bitValue *= 2; } Console.WriteLine((char)result); 

每个位对应2的倍数。从最后一位开始并将位值乘以2,即可获得所需的结果。

将byte []转换为字符串

 byte[] bytes ; string base64Data = Convert.ToBase64String (bytes); 

要么

 string strData = Encoding.Default.GetString(bytes);