繁体   English   中英

获取一个数字字符串并检查十六进制或十进制数字C#

[英]Get a Numeric String and Check if is a Hex or Dec number C#

我正在开发带有USB仿真器键盘读卡器的简单读卡器。 我正在从卡中收到一个字符串,我想检查该字符串是数字还是十六进制。 我只是想让该字符串的值是十六进制数字。

由于我使用的是C#,所以我知道可以使用正则表达式,但是问题在于十六进制数字也只能包含数字,而不能包含字母。

有人可以帮我吗? 谢谢

我的代码:

    public string ProcessReadContentNumber(string ReadContentNumber)
    {
        Int64 cNumber;
        var hexStyle = System.Globalization.NumberStyles.HexNumber;

        //  Check If is HEX
        if (Int64.TryParse(ReadContentNumber, hexStyle, CultureInfo.CurrentCulture, out cNumber))
        {
            String First3Byte = ReadContentNumber.Substring(0, 6);

            String NextBytes = ReadContentNumber.Substring(6);

            //Convert First 3 Bytes
            Int64 decAgain1 = int.Parse(First3Byte, System.Globalization.NumberStyles.HexNumber);

            //Convert Last 4 Bytes
            Int64 decAgain2 = Int64.Parse(NextBytes, System.Globalization.NumberStyles.HexNumber);

            String FinalNumber = decAgain1.ToString() + "-" + decAgain2.ToString();

            return FinalNumber;   
        }

        return null;
    }

为什么您需要为此使用正则表达式? 尝试解析它:

string maybeHex = "fffe";
int number;
var hexStyle = System.Globalization.NumberStyles.HexNumber;
if( int.TryParse(maybeHex, hexStyle, CultureInfo.CurrentCulture, out number))
{
    // valid
    Console.WriteLine("Valid hex number: " + number);
} 

即使它是一个有效的整数,它也会拒绝像978787879这样的输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM