首页 > 解决方案 > 为什么“0x5”没有被解析为有效的十六进制数?

问题描述

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

我正在使用Check if string is valid represtion 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在输出。

这里有什么问题?

标签: c#

解决方案


来自文档

AllowHexSpecifier

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

(强调我的。)


推荐阅读