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

问题描述 投票:2回答:2

我想制作一个采用二进制字符串并将其转换为十进制字符串的程序。我知道你是怎么做的:

Convert.ToString(00001000, 2);

将单个二进制数转换为单个十进制数,但是如何将一串二进制数转换为字符串,如下所示:

00001000 00000101 00001100 00001100 00001111
00010111 00001111 00010010 00001100 00000100

转换为十进制数字字符串,如下所示:

8 5 12 12 15
23 15 18 12 4

感谢您的帮助。

c# binary decimal
2个回答
3
投票

就像Convert.ToInt32一样简单>

将指定基数的字符串表示形式转换为等效的32位带符号整数。

Convert.ToInt32

如果它在用空格隔开的列表中,请使用int output = Convert.ToInt32(input, 2);

返回此实例中包含子字符串的字符串数组由指定字符串或Unicode元素分隔的字符数组。

string.Split

输出

string.Split

var input = "00001000 00000101 00001100 00001100 00001111"; var results = input.Split(' ') .Select(x => Convert.ToInt32(x, 2)) .ToList(); Console.WriteLine(string.Join(",",results))


对于在家里玩的人,这是将二进制字符串转换为8,5,12,12,15 的一种荒谬的方法,完全忽略了字节序

注意:scale只是预期的项目数,可以很容易地用List.Add()替换它,而费用很少

Full Demo Here

基准

以下是您享受娱乐的一些基准

int

测试1

[Test("BitShift", "", false)]
public unsafe List<int> Convert(string input, int scale)
{

   var list = new int[scale];

   fixed (int* plist = list)
   fixed (char* pInput = input)
   {
      var pLen = pInput + input.Length;
      var val = 0;
      var pl = plist;
      for (var p = pInput; p < pLen; p++)
         if (*p != ' ')
            val = (val << 1) + (*p - 48);
         else
         {
            *pl = val;
            pl++;
            val = 0;
         }
      *pl = val;
   }

   return list.ToList();
}

2
投票

要像这样转换一个:

© www.soinside.com 2019 - 2024. All rights reserved.