「0x310530」などの文字列値をC#で整数値に変換するにはどうすればよいですか?
私はint.TryParseを試しました(そしてint.TryParseでもSystem.Globalization.NumberStyles.Any)が機能しません。
PDATE: Convert.ToInt64またはConvert.ToInt32は、末尾の「0x」を削除しなくても機能するようです。
_long hwnd = Convert.ToInt64("0x310530", 16);
_
Convert.ToInt64 Method (String, Int32)
のドキュメントはこう言っています:
「fromBaseが16の場合、valueパラメータで指定した数の前に「0x」または「0X」を付けることができます。」
ただし、例外を発生させないTryParseのようなメソッドをお勧めします。
int value = (int)new System.ComponentModel.Int32Converter().ConvertFromString("0x310530");
から [〜#〜] msdn [〜#〜] :
NumberStyles.AllowHexSpecifier
数値ストリングが16進値を表すことを示します。有効な16進数値には、0〜9の数字と16進数の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
}