【问题标题】:Assigning an integer to a char array c#将整数分配给char数组c#
【发布时间】:2021-07-04 16:35:35
【问题描述】:

我尝试将整数插入 char 数组但失败了,由于某种原因,当我分配一个值(例如 charc[0] = 2)时,我得到了这个奇怪的值 '50',当我尝试调试时,我注意到实际上有 2数组中每个单元格的值,例如,当我分配 charc[0] = 2 时,它显示了 2 个不同的值:“50,'2'”)。 因此,当我尝试访问每个单元格中的值时,我得到的是 50(我读的是 ASCII 值)而不是理想的 2。 “line”变量包含以下格式的字符串:“23x11x5”(3 个单独的数字,它们之间有一个“x”)。这是代码:

 StreamReader sr = new StreamReader("TextFilePathHere.txt");
           line = sr.ReadLine();
           char[] charc = new char[line.Length];
                charc = line.ToCharArray();

【问题讨论】:

  • I get this weird value of '50' 这是一个字符代码。尝试charc[0] = '2'charc[0] = 2.ToString()[0] 或更好的charc[0] = 2 + 48 其中48 是每个十进制数字的常量,因为它是字符表中0 的索引。
  • 反向转换int number = int.Parse(charc[0].ToString()) 或干脆int number = charc[0] - 48
  • 我使用函数ToCharArray() 分配ASCII 和所需的值,你基本上是说我必须单独分配每个整数而不使用所述函数?
  • 解析"23x11x5"使用int[] numbers = line.Split('x').Select(int.Parse).ToArray(),你会得到一个包含3个数字的数组。反向转换string text = string.Join("x", numbers.Select(x => x.ToString())).

标签: c# arrays visual-studio char


【解决方案1】:

当你执行charc[0] = 2的时候,你没有得到错误Cannot implicitly convert type 'int' to 'char'吗?您不能将整数分配给 char 类型的字段。

尝试将其分配为charc[0] = '2'charc[0] = 2.ToString()[0];

另外,“23x11x5”的第一个字符是'2',所以行不会改变。您还说“尝试插入整数”。所以如果想插入一个char,可以调用String.Insert(Int32, String) Method

string newString = line.Insert(0, "9");
Console.WriteLine(newString); // 923x11x5

由于数组的大小是固定的,请尝试使用可以动态添加char的List。

List<char> list = line.ToCharArray().ToList();
list.Insert(0, '9');
Console.WriteLine(new string(list.ToArray()));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2014-12-14
    • 2018-03-20
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多