C#将空格分隔的字节数组整数转换为整数列表

时间:2016-03-03 22:48:52

标签: c#

我有以下数字,我在一行中输入控制台的空格:

4 20 3 3 1

我读了这一行并将其分配给一个字符串变量。使用ASCIIEncoding.ASCII.GetBytes()我将字符串转换为字节数组。

如何通过删除空格并将整数添加到列表中,将字节数组拆分为整数?

例如,上述数字将转换为列表[4, 20, 3, 3, 1]

3 个答案:

答案 0 :(得分:1)

修改:添加了byte[]作为唯一问题参数的解决方案

我不知道为什么你不能只拿你的字符串来完成这些事情,但这里是一个解决方案,其中包含来自该字符串的ascii符号的字节数组。 注意任何其他非数字或空白字符和int32溢出。

List<byte[]> splitResult = new List<byte[]>();
IEnumerable<byte> bytes = new byte[] { (byte)'1', (byte)'2', (byte)' ', (byte)'5', (byte)'4', (byte)' ', (byte)' ' }; // <- this should be your bytes
while (bytes.Any())
{
    byte[] oneNumberBytes = bytes.SkipWhile(x => x == ' ').TakeWhile(x => x != ' ').ToArray();
    if(oneNumberBytes.Count() > 0) splitResult.Add(oneNumberBytes);
    bytes = bytes.SkipWhile(x => x == ' ').SkipWhile(x => x != ' ');
}

var result = splitResult.Select(sr => sr.Aggregate(0, (seed, asciiDigit) => seed * 10 + asciiDigit - '0')).ToList();

如果可以恢复初始字符串:

使用string.Split方法。

Console.ReadLine().Split(' ').Select(x => int.Parse(x)).ToList();

答案 1 :(得分:1)

您可以在输入字符串上调用.Split(" "),您将获得所需的字符串数组。

比你需要将它们转换为int。如果你确定你的输入是这样的,你可以使用linq:

string[] split = input.Split(" ");
List<int> values = split.Select(x => int.Parse(x)).ToList();

答案 2 :(得分:1)

使用Linq:

static void Main(string[] args)
{
    var input = Console.ReadLine();
    var integers = input.Split(new Char[] { ' ' }).Select(x => Convert.ToInt32(x)).ToList();
}