转换时的转换问题

时间:2017-03-23 16:15:31

标签: c#

我想将一个字符转换为一个整数进行处理,但它没有选择它

test = Convert.ToInt32(ch);
Console.WriteLine(test);
if (test >= 0 && test <= 9)
{
    numst[num_count] = test;
    Console.WriteLine(numst[num_count]);
    num_count++;
}

test,num_count是整数,numst是整数数组,ch是字符

我想检查一下如果ch是一个数字,那么将它放入整数数组

请帮助我解决逻辑错误的地方 谢谢

3 个答案:

答案 0 :(得分:2)

如果ch数字字符,那么这不符合您的想法:

Convert.ToInt32(ch);

例如,字符'9'的整数值为57。根据您的if条件,您预期的唯一字符基本上是unprintable charactersNULTAB)。

听起来你正在寻找Char.GetNumericValue()

test = Char.GetNumericValue(ch);

答案 1 :(得分:1)

如果您想测试数字,请使用char.IsDigit()。要将该字符转换为整数,请使用char.GetNumericValue()

if (char.IsDigit(ch))
{
    numst[num_count] = char.GetNumericValue(ch);
    Console.WriteLine(numst[num_count]);
    num_count++;
}
对于char.IsDigit()true之间的字符,

'0'会返回'9',但false代表'*'char.GetNumericValue()

'9'为您提供角色代表的数值。因此9转换为Convert.ToInt32()

char会将int转换为'9'0x39这样的字符的值为57native_word

答案 2 :(得分:0)

有两种方法 第一种方法

if (char.IsDigit(ch))
{
    numst[num_count] = char.GetNumericValue(ch);
    Console.WriteLine(numst[num_count]);
    num_count++;
}

第二种方法

if (ch >= 48 &&  ch<=57)
{
    numst[num_count] = char.GetNumericValue(ch);
    Console.WriteLine(numst[num_count]);
    num_count++;
}

他们都工作正常,并有一些结果 谢谢你们每个人帮助我