如何在C#中将"0x310530“这样的字符串值转换为整数值?
我尝试过int.TryParse (甚至是使用System.Globalization.NumberStyles.Any的int.TryParse ),但它不起作用。
更新:似乎Convert.ToInt64或Convert.ToInt32无需删除前导“0x”即可工作:
long hwnd = Convert.ToInt64("0x310530", 16);
Convert.ToInt64 Method (String, Int32)
的文档中写道:
“如果fromBase为16,则可以在value参数指定的数字前面加上"0x”或“0x”。“
但是,我更喜欢像TryParse这样不会引发异常的方法。
发布于 2010-11-26 02:40:56
int value = (int)new System.ComponentModel.Int32Converter().ConvertFromString("0x310530");
发布于 2010-11-26 02:23:54
来自MSDN
NumberStyles.AllowHexSpecifier
指示数字字符串表示十六进制值。有效的十六进制值包括数字0-9和十六进制数字a-f和A-F。使用此样式分析的字符串不能以"0x“或"&h”作为前缀。
所以你必须先去掉0x
前缀:
string s = "0x310530";
int result;
if (s != null && s.StartsWith("0x") && int.TryParse(s.Substring(2),
NumberStyles.AllowHexSpecifier,
null,
out result))
{
// result == 3212592
}
发布于 2015-02-16 20:15:41
Cristi Diaconescu指出的Direct from SHanselman,但是我已经包含了主要的源代码:
public static T GetTfromString<T>(string mystring)
{
var foo = TypeDescriptor.GetConverter(typeof(T));
return (T)(foo.ConvertFromInvariantString(mystring));
}
整篇文章值得仔细看看!
https://stackoverflow.com/questions/4279892
复制相似问题