我的winforms应用程序中有一个文本框,当我录制此值时,例如 1258
int[] arr = new int[] { textBox1.Text[0], textBox1.Text[1], textBox1.Text[2], textBox1.Text[3] };
arr
的内容是:49,50,53,56不是1,2,5,8 !!!
即使我使用StringTrim方法,我也得到相同的结果
我需要知道这个错误的原因是什么?我该如何解决?
答案 0 :(得分:8)
这是由于从char
到int
的隐式转换。
您获得了字符的ASCII
值。试试这个:
var arr = textBox1.Text.Select(x => int.Parse(x.ToString())).ToArray();
答案 1 :(得分:1)
那是因为你得到的是ASCII码而不是整数值。
在ASCII中,char'0'= 48 = 30h
然后你可以使用它来获取整数值(例如): textBox1.Text [0] - 48
请注意,它仅适用于1位数的值,您需要解析更多数字。
答案 2 :(得分:-1)
它将ASCII值插入数组。因此,不是0而是插入48,而不是1,它插入49,依此类推。
如果您需要文本中的实数,则需要使用int.Parse("1")
解析它
因此,对于您的阵列,这应该可行,即使它不是最佳解决方案。
int[] arr = new int[] { int.Parse(textBox1.Text[0]), int.Parse(textBox1.Text[1]), int.Parse(textBox1.Text[2]), int.Parse(textBox1.Text[3]) };