【问题标题】:How to convert binary to string?如何将二进制转换为字符串?
【发布时间】:2012-01-06 21:08:51
【问题描述】:
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++;
   }
}

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

【问题讨论】:

  • 你自己解决了这个问题,但也有标准的库 BinaryFormatter 类,它可以帮助你很多,编码和解码。msdn.microsoft.com/es-es/library/…
  • 不使用 BinaryFormatter 类的任何其他选项
  • 这是作业吗?如果是,请相应地标记它。
  • 不,它不是作业,它只是我大型项目的一小部分

标签: c# string binary


【解决方案1】:

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

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

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

【讨论】:

  • 这不会与原始问题的代码相反。
【解决方案2】:

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

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,就可以得到想要的结果。

【讨论】:

  • 只需使用外循环迭代 7 位集合。
【解决方案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
}

【讨论】:

  • List 对应于 character , List> 对应于程序中的字符串。选择部分分解 List> 到 List ,并对每个应用一个函数。聚合作为采用两个参数梳折叠序列的函数应用。它将每个 List 转换为字符。 List> -> list ... List -> char ... char -> char 数组 -> new string(char []) -> string.
猜你喜欢
  • 1970-01-01
  • 2013-09-19
  • 2021-02-24
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多