16進数を表現した文字列をintに変換します。
ポイントは以下の二つです。
事前検証を行う
『Uri.IsHexDigit』を使用して事前検証を行います。Uri.IsHexDigit(charValue)対象文字列を「ToCharArray」でChar配列にし、一文字ずつ16進数に使用される文字であるかを検証します。
Regexによって文字列検証を行わずとも、このメソッドを使用すれば良いわけです。
16進数文字列をintに変換する
左側にゼロが埋め込まれていることを許す16進数文字列を32 ビット符号付き整数に変換します。int.Parse(HexString, NumberStyles.AllowHexSpecifier));16進数文字列をintに変換するにはこれが一番簡単です。
Sample Code
static void Main(string[] args)
{
Console.WriteLine("16進数を入力して下さい.");
while (true)
{
//1 行分の文字を読み取ります。
string hex = Console.ReadLine();
//対象文字が空であれば終了します。
if (string.IsNullOrEmpty(hex)) return;
if (IsHexString(hex))
{
Console.WriteLine(
//文字列をそれと等価な 32 ビット符号付き整数に変換し、表示します。
int.Parse(hex, NumberStyles.AllowHexSpecifier));
}
else
{
Console.WriteLine("is not hexadecimal number.");
}
}
}
/// <summary>
/// 指定した文字列が有効な 16 進数の数字かどうかを検証します。
/// </summary>
/// <param name="hx">検証対象文字列</param>
/// <returns>
/// 文字列が有効な 16 進数の値である場合は true。
/// それ以外の場合は false。
/// </returns>
static bool IsHexString(string hx)
{
foreach (char c in hx.ToCharArray())
{
if(!Uri.IsHexDigit(c)) return false;
}
return true;
}





0 Comments:
コメントを投稿