为什么不能将“ 0x5”解析为有效的十六进制数字?

时间:2019-05-21 07:42:24

标签: c#

我正在尝试检查字符串是否包含有效的十六进制数字。

我正在使用Check if string is valid represantion of HEX number中记录的方法。

使用以下代码:

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        int temp;
        bool b = int.TryParse("0x5", System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out temp);
        System.Console.Write("{0} : {1}", b, temp);
    }
}

我在输出中得到False : 0

这是怎么了?

1 个答案:

答案 0 :(得分:5)

来自docs

  

AllowHexSpecifier

     

表示数字字符串表示一个十六进制值。有效的十六进制值包括数字0-9和十六进制数字A-F和a-f。 使用此样式分析的字符串不能以“ 0x”或“&h”作为前缀。使用AllowHexSpecifier样式分析的字符串将始终被解释为十六进制值。可以与AllowHexSpecifier组合的唯一标志是AllowLeadingWhite和AllowTrailingWhite。 NumberStyles枚举包括一个复合样式HexNumber,它由这三个标志组成。

(强调我的。)