c# - 为什么“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
在输出。
这里有什么问题?
解决方案
来自文档:
AllowHexSpecifier
表示数字字符串表示十六进制值。有效的十六进制值包括数字 0-9 和十六进制数字 AF 和 af。使用此样式解析的字符串不能以“0x”或“&h”为前缀。使用 AllowHexSpecifier 样式解析的字符串将始终被解释为十六进制值。唯一可以与 AllowHexSpecifier 组合的标志是 AllowLeadingWhite 和 AllowTrailingWhite。NumberStyles 枚举包括一个复合样式 HexNumber,它由这三个标志组成。
(强调我的。)
推荐阅读
- xml - MarkLogic:cts:突出显示特定元素
- c# - 如何使“CacheListenerAdapter”在 ASP.NET 中工作?
- regex - 使用Python根据找词提取三句话
- java - Java中列表的二分查找
- javascript - 如何在 Spring MVC 的客户端处理 JWT 令牌?
- rust - 通过特征对类型的许多可选和独立功能进行抽象的最惯用/最好的方法是什么?
- laravel - 使用 Laravel 选择恰好一个月内最近的记录
- json - 当我通过 powershell 导出 QnA 制造商数据时,项目符号正在发生变化
- java - 为什么变量的值会改变
- java - 我们可以将实体转换为 dto/pojo 对象吗?