如果输入字符串是二进制/十六进制,如何检入c#。数?

时间:2011-02-26 11:40:43

标签: c# binary

如果来自输入字段的输入字符串是正确的二进制(或六进制)数字,我如何检查c#?

3 个答案:

答案 0 :(得分:6)

using System.Globalization;
bool valid = int.TryParse(inputString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result);

适用于没有前缀的十六进制数字。如果您不知道期望的数字类型,可以使用

bool isHex = inputString.Length > 2 &&
    inputString.Substring(0, 2).ToLowerInvariant() == "0x" &&
    int.TryParse(inputString.Substring(2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result);

同时检查并解析字符串。对于二进制我会使用

Regex.IsMatch(inputString, "^[01]+$");

您应该使用inputString = inputString.Trim()使应用程序对“非标准输入”更加宽容。

答案 1 :(得分:3)

您可以使用以下代码:

int dummy;
bool isHex = int.TryParse(str,
                          NumberStyles.HexNumber,
                          CultureInfo.InvariantCulture,
                          out dummy);

对于二进制文件,没有内置函数,但您可以使用以下内容:

static bool isbin(string s)
{
    foreach (var c in s)
        if (c != '0' && c != '1')
            return false;
    return true;
}

答案 2 :(得分:0)

尝试

Regex.IsMatch("0x6868FC", "\b0x[a-fA-F0-9]+\b");

如果您希望用户输入以0x开头的十六进制数。