C char.GetNumericValue v/s Java Character.GetNumericValue
有人知道为什么java Character.getNumericValue'a'返回10,而C char.getNumericValue'a'返回-1吗 不同语言中的不同函数做不同的事情。这里的关键区别在于C函数专门用于数字字符,而Java函数似乎更通用 返回指定Unicode字符表示的int值 将指定的数字Unicode字符转换为双精度 浮点数。 c的数值,如果该字符表示一个数字;否则,-1.0 也许您正在寻找: 将指定的Unicode字符的值转换为 等效的32位有符号整数C char.GetNumericValue v/s Java Character.GetNumericValue,java,c#,Java,C#,有人知道为什么java Character.getNumericValue'a'返回10,而C char.getNumericValue'a'返回-1吗 不同语言中的不同函数做不同的事情。这里的关键区别在于C函数专门用于数字字符,而Java函数似乎更通用 返回指定Unicode字符表示的int值 将指定的数字Unicode字符转换为双精度 浮点数。 c的数值,如果该字符表示一个数字;否则,-1.0 也许您正在寻找: 将指定的Unicode字符的值转换为 等效的32位有符号整数 如果您想实现从J
如果您想实现从Java到C的转换,我编写了这个helper函数来完成与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;
}
}
Java是问题的一部分?您的问题被否决,因为它只是要求提供文档。@user960567您可能没有要求提供文档,但可以在那里找到答案。它们是不同语言的方法;没有特别的理由让他们做完全相同的事情。@user960567:Yes;事实上,Math.round也是不一致的。不同的语言设计者会做出不同的决定。阅读文档。