C# char.GetNumericValue v/s Java Character.getNumericValue
本文关键字:Java Character getNumericValue char GetNumericValue | 更新日期: 2023-09-27 18:04:19
谁知道为什么java Character.getNumericValue('a')返回10和c# char.GetNumericValue('a')返回-1?
不同语言的不同函数做不同的事情。这里的关键区别在于c#函数是专门针对数字字符的,而Java函数似乎更通用。
Java - getNumericValue
返回指定的Unicode字符所代表的int值。
c# - GetNumericValue将指定的数字 Unicode字符转换为双精度浮点数。如果字符c表示一个数字,则c的数值;否则,-1.0 .
也许你正在寻找:
c# -转换。ToInt32
将指定的Unicode字符的值转换为等效的32位有符号整数。
如果您想从Java转换到c#,我编写了这个辅助函数来做与Java字符相同的事情。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;
}
}