2017-02-10 85 views
-2

我想要一个解决方案将输入int say 010转换为int {0,1,0}列表。 下面是我尝试过的代码,直到遇到0。如何将int转换为列表<int>

Int num = 010; 
List<int> listOfInt = new List<int>(); 
While(num > 0) 
listOfInt.Add(num%10); 
num/= 10; 

我只是想分割输入的int并将其转换为int列表。 LINQ很好,如果这可能是有效的! 谢谢!

+0

LINQ并不认同这一 – Hemal

+5

'010'处理绝不是int顺便说一句,'010'是'10'时为代表一个整数,前导零不可恢复。 –

+0

你可能会丢失'{'和'}' – Valentin

回答

5

正如其他已经提到010相同10当已经解析为int。但是,例如,您可以将您的号码作为字符串来自控制台输入。

string myNumber = "010"; 

这可以在每一个字符很容易使用LINQ分裂:

var intList = myNumber.Select(x => Convert.ToInt32(x.ToString())).ToList(); 

由于每个字符在内部是一个int其中'0'等于49你必须每一个字符转换为字符串,这之前是通过使用ToString完成。

1
Console.WriteLine("Enter a number:") 
var input = Console.ReadLine(); 

List<int> result = input.Select(c => int.Parse(c.ToString())).ToList(); 
1
string num = "010"; 
List<int> listOfInt = new List<int>(); 
foreach(char item in num) 
{ 
    listOfInt.Add(Convert.ToInt32(item.ToString())); 
} 
+2

没有转换意味着你会得到一个int字符代码列表 –

+0

在添加之前不需要从char到int的转换它列出。 iirc,没有从'char'到'int'的隐式转换 –

+2

隐式地'(int)'1''是49 –

2

在计算机算术或现实生活中,010和10之间没有区别。零是零。

如果你想将数字转换为特定字符串格式和提取字符,执行相同的步骤声明:

10.ToString("000").Select(c=>c-48).ToList(); 

结果是与数字0,1,0的列表。

表达式c-48利用了字符本质上是整数,数字从0开始向上的优势。所以图48是0,1是49等

如果输入是一个字符串,例如"10"你就必须用0垫之达到所希望的长度:

"10".PadLeft(3,'0').Select(c=>c-48).ToList() 

其结果将是0,1,0再次。

如果毕竟您只想从paddes字符串中检索字符,那么您只需要填充字符串,因为字符串的一个IEnumerable。您可以将字符复制到阵列String.ToCharArray()或列表为前:

"10".PadLeft(3,'0').ToList()