char c = '0';
int number = (int) c;
Debug.Log(number);
它会返回一个看不见的角色,而我实际上想要投射' 0'以整数表示为0。我已经尝试过了:
答案 0 :(得分:4)
答案 1 :(得分:2)
尝试int.Parse:
char c = '0';
int number = int.Parse(c.ToString());
请注意,如果参数无效,这将导致异常。
你也可以尝试:int.TryParse
char c = '0';
int number;
if (int.TryParse(c.ToString(),out number))
{
//parse successfully
}
答案 2 :(得分:2)
您可以编写一个简单的扩展方法来将char
转换为int
,另外您可以检查char是否可以实际转换为整数。
public static int ToInt32(this char c)
{
if (!Char.IsNumber(c))
{
throw new ArgumentException("Char is not a number", "c");
}
return c - '0';
}
用法
[Test]
[TestCase('1', ExpectedResult = 1)]
[TestCase('a', ExpectedException = typeof(ArgumentException))]
public int ChatToNumTest(char c)
{
return c.ToInt32();
}
答案 3 :(得分:1)
GetNumericValue应该有效,除非您忘记将其强制转换为int,因为它返回double:
char c = '0';
int number = (int)char.GetNumericValue(c);
//another way...
int number = Convert.ToInt32(c.ToString());
答案 4 :(得分:1)
检查char
是否在预期范围内是个好主意,
int number = -1;
char c = '0';
if (c >= '0' && c <= '9') {
number = (int) c - '0';
} else {
Debug.Log("Character " + c + " isn't a digit.");
}
答案 5 :(得分:0)
如果仅想要与标准数字10对应的字符值,请使用the following:
var number = System.Globalization.CharUnicodeInfo.GetDecimalDigitValue(c);
如果您想要两个数字和更常见的Unicode数字字符的数值,请使用the following,例如分数如½:
var number = System.Globalization.CharUnicodeInfo.GetNumericValue(c);