C#char.GetNumericValue v / s Java Character.getNumericValue

时间:2016-08-28 15:46:15

标签: java c#

有谁知道为什么java Character.getNumericValue('a')返回10而C#char.GetNumericValue('a')返回-1?

2 个答案:

答案 0 :(得分:1)

不同语言的不同功能做不同的事情。这里的关键区别在于C#函数专门用于数字字符,而Java函数似乎更通用。

  

Java - getNumericValue

     

返回指定的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;
        }
    }