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:
コメントを投稿