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

Des*_*ire 3 c# string binary

static List<int> ConvertTextToBinary(int number, int Base)
{
    List<int> list = new List<int>();
    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++;
   }
}
Run Code Online (Sandbox Code Playgroud)

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

Esi*_*Esi 7

用于将字节 [] 转换为字符串

byte[] bytes ;
string base64Data = Convert.ToBase64String (bytes);
Run Code Online (Sandbox Code Playgroud)

或者

string strData = Encoding.Default.GetString(bytes); 
Run Code Online (Sandbox Code Playgroud)

  • 这不会与原始问题的代码相反。 (3认同)

BLU*_*IXY 3

static string ConvertBinaryToText(List<List<int>> 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<List<int>>();
   for(var counter=0; counter!=s.Length; counter++){
       List<int> 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
}
Run Code Online (Sandbox Code Playgroud)