将“字符串对象”转换为Int32的数组,然后转换为Uint32的数组

时间:2019-07-12 09:53:38

标签: c# arrays string casting

我有以下对象,该对象包含要转换为Int32 []数组的字符串:

object stringObject= "4194304 4286147 4380001 4475911 4573920 4674076 4776425 4881015 4987896 5097116 5208729 5322785 5439339 5558445 5680159 5804538 5931641 6061527 6194257 6329894 6468501 6610142 6754886 6902798 7053950 7208411 7366255 7527555 7692387 7860828 8032958 8208857 8761011 9122297 9473110 9814040 10145628 10468373 10782733 11089135 11387970 11679603 11964374 12242598 12514569 12780563 13040835 13295628 13545167 13789664 14029319 14264321 14494846 14721062 14943127 15161191 15375395 15585873 15792753 15996157 16196198 16392986 16586625 16777215"

我做了什么(不确定这是最好的方法吗?):

int[] retValues = stringObject.Split(' ').Select(v => Convert.ToInt32(v, 10)).ToArray();

这里没有问题,但是如何将retValues转换为Uint32 []数组。我尝试了以下操作,但不起作用:

uint[] retValuesUint = retValues.Select(v => Convert.ToUInt32(v, 10));

uint[] retValuesUint = retValues.Select(v => (UInt32)v);

1 个答案:

答案 0 :(得分:7)

首先,您的示例无法编译,因为object没有Split方法。

第二,如果将stringObject的声明更改为string类型,则retValuesint s 由64个{{1 }} 。它的长度为64,其中的对象仍为int,它是int的别名。

Int32
Console.WriteLine(retValues.Length);
> 64
Console.WriteLine(retValues[0].GetType().Name);

编辑:

您提供的> Int32 转换有两个问题。

  1. uint不像ToUInt32那样接受int fromBase参数-它仅适用于以10为基数的数字。

  2. 您最终忘记了ToInt32通话,实际上是您想要的ToArray

uint[]