有谁知道为什么java Character.getNumericValue('a')返回10而C#char.GetNumericValue('a')返回-1?
答案 0 :(得分:1)
不同语言的不同功能做不同的事情。这里的关键区别在于C#函数专门用于数字字符,而Java函数似乎更通用。
返回指定的Unicode字符所代表的int值。
<强> C# - GetNumericValue 强>
将指定的数字 Unicode字符转换为双精度 浮点数。 c的数值,如果该字符代表一个数字;否则,-1.0。
也许您正在寻找:
<强> C# - Convert.ToInt32 强>
将指定的Unicode字符的值转换为 等效的32位有符号整数。
答案 1 :(得分:0)
如果你想要从Java到C#的转换,我编写了这个帮助函数来做与Java Character.getNumeric函数相同的事情。它不干净,可能会错过角落的情况,但它涵盖了基础知识。我在.NET世界中没有找到一种干净的编码/转换方式,但可能存在一个:
private int javaCharGetNumericValue(char c)
{
switch (c)
{
case '1': return 1;
case '2': return 2;
case '3': return 3;
case '4': return 4;
case '5': return 5;
case '6': return 6;
case '7': return 7;
case '8': return 8;
case '9': return 9;
case '0': return 0;
case 'A': case 'a': return 10;
case 'B': case 'b': return 11;
case 'C': case 'c': return 12;
case 'D': case 'd': return 13;
case 'E': case 'e': return 14;
case 'F': case 'f': return 15;
case 'G': case 'g': return 16;
case 'H': case 'h': return 17;
case 'I': case 'i': return 18;
case 'J': case 'j': return 19;
case 'K': case 'k': return 20;
case 'L': case 'l': return 21;
case 'M': case 'm': return 22;
case 'N': case 'n': return 23;
case 'O': case 'o': return 24;
case 'P': case 'p': return 25;
case 'Q': case 'q': return 26;
case 'R': case 'r': return 27;
case 'S': case 's': return 28;
case 'T': case 't': return 29;
case 'U': case 'u': return 30;
case 'V': case 'v': return 31;
case 'W': case 'w': return 32;
case 'X': case 'x': return 33;
case 'Y': case 'y': return 34;
case 'Z': case 'z': return 35;
default:
return -1;
}
}