我想制作一个采用二进制字符串并将其转换为十进制字符串的程序。我知道你是怎么做的:
Convert.ToString(00001000, 2);
将单个二进制数转换为单个十进制数,但是如何将一串二进制数转换为字符串,如下所示:
00001000 00000101 00001100 00001100 00001111
00010111 00001111 00010010 00001100 00000100
转换为十进制数字字符串,如下所示:
8 5 12 12 15
23 15 18 12 4
感谢您的帮助。
就像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();
}
要像这样转换一个: