16進数文字列をintに変換するための事前検証と変換メソッド [C#]

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:

Sony Style(ソニースタイル)
デル株式会社

Recent Posts