3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【C#】文字列→数値変換の色々

Last updated at Posted at 2019-08-30

文字列を数値に変換することは
割と良くあるけど微妙に忘れがちなので備忘の意味も込めて。
#16進数文字列の変換とか使うたびに調べているような…

#2進数/8進数/16進数の変換
個人的にはこれを良く使っている。

var binary = Convert.ToInt32("11", 2); // 2進数
var octal = Convert.ToInt32("11", 8); // 8進数
var hex = Convert.ToInt32("1a", 16); // 16進数

// 上から3, 9, 26になる

他にもNumberStylesを使う方法もあるのでそちらも記載。

var hex = int.Parse("1a", NumberStyles.HexNumber);

NumberStyles.HexNumberの部分は
AllowHexSpecifierを指定すれば16進数として扱ってくれるけど
前後に余分な空白があるとNGなので素直にHexNumberとしておくのが無難。

どちらの方法を使っても良いと思うけど
TryParseしたい時はNumberStylesを使う。

int hex;

if(false == int.TryParse( "xyz", System.Globalization.NumberStyles.HexNumber, null, out hex )
{
	MessageBox.Show( "16進数に変換できないよ" );
}

#その他の変換
NumberStylesは指数とか3桁区切りになっている場合に変換出来るので知っておくと便利。

vat str = "123,456,789";
var num = int.Parse(str, System.Globalization.NumberStyles.AllowThousands);
// 123456789に変換される

str = "123e4";
num = int.Parse(str, System.Globalization.NumberStyles.AllowExponent);
// 1230000に変換される

但し桁区切り文字に関しては実行環境の設定に依存するので注意。
setting.png
※[コントロールパネル]-[地域と言語]から『追加の設定』ボタンを押下すると表示される

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?