【问题标题】:string to int array conversion c# [duplicate]字符串到int数组转换c#[重复]
【发布时间】:2017-11-23 23:12:46
【问题描述】:

我有一个值为“12345678”的字符串。我想将此值分配给整数数组,例如数组的第一个索引包含 1,数组的第二个索引包含 2,依此类推。因此,当我编写下面的代码并执行时,我收到 0 索引的值 48 和第二个索引的值 49,我的数字的 ascii 值。 声明

int[] ArryDIReadValue = new int[DI_COUNT_CHANNEL];
string binary = Convert.ToString(portData, 2);

ArryDIReadValue = binary.Select(n => Convert.ToInt32(n)).ToArray();

有人可以帮忙解决这个问题吗。

【问题讨论】:

  • binary.ToCharArray(); 怎么样?之后,您可以将每个 char 解析为一个 int 并将它们粘贴到您的 ArryDIReadValue 数组中。

标签: c# arrays type-conversion


【解决方案1】:
ArryDIReadValue = binary.Select(n => (n - '0')).ToArray();

简单快速。

n - 是char。所以,chars 0, 1, ... 9 有代码 30, 31, ... 39。所以,要获得 int 值,我们需要从每个代码中减去 30。我们知道, 30 是 char 0 的代码。

【讨论】:

  • 我想知道它是如何工作的。你能解释一下它是如何工作的吗?
【解决方案2】:

尝试添加 ToString() 比如;

ArryDIReadValue = binary.Select(n => Convert.ToInt32(n.ToString())).ToArray();

【讨论】:

  • 谢谢..现在它正在工作......
【解决方案3】:

使用char.GetNumericValue:

ArryDIReadValue = binary.Select(n => (int)char.GetNumericValue(n)).ToArray();

【讨论】:

  • 这仅在我声明双数组时有效,例如 double [] ArryDIReadValue = binary.Select(n => char.GetNumericValue(n)).ToArray();否则会出错。
  • @PriyankaMehta 我编辑了答案。它可以随心所欲地工作。
  • 谢谢....它现在可以工作了
猜你喜欢
  • 1970-01-01
  • 2014-07-05
  • 2014-03-23
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
  • 2020-08-27
  • 2017-03-21
  • 1970-01-01
相关资源
最近更新 更多