.net column
.NET開発者のためのブログメディア

C#で16進数に変換する方法とは?16進数の変換方法をご紹介!

 
C#で16進数に変換する方法とは?16進数の変換方法をご紹介!
SE
C#で10進数と16進数は相互変換できますか。
PM
できます。2進数やbyte配列とも16進数と相互変換できます。

C#での16進数変換とは?


今回は様々な進数の数字を、C#で16進数と相互に変換する方法をご紹介します。

また、文字列が16進数か否かを判断する方法についても併せてご紹介しますので、C#での16進数変換方法に興味のある方は、ぜひご覧ください。

16進数とは

「16進数」とは、それぞれの桁が16になると桁上りする数字を表します。0から9までの数字と、AからFまでのアルファベットの組み合わせで表現されます。

具体的には、以下のようになります。

10進数:16進数
1:1
2:2
3:3
4:4
5:5
6:6
7:7
8:8
9:9
10:A
11:B
12:C
13:D
14:E
15:F
16:10
17:11
18:12
19:13
20:14

C#では、普通に数字を並べると10進数として扱われますが、先頭に0x(または0X)を付けると16進数で扱われます。

具体的には、以下のように記載します。
var x = 0xFF;
var y = 0XA1;

また、C# 7.2で、”0x”の直後に区切り文字の”_”を入れることができるようになりました。
var x = 0x_FF;
var y = 0X_A1;

こうすることで、人の目で見ても分かりやすい表記になります。

10進数を16進数に変換

前述のとおり、C#では、10進数と16進数を相互に変換できます。以下に、実際のソースコードを見てみましょう。

プログラムの先頭に「using System;」と記載してください。

実行結果は以下のようになります。

ToString(“x”)で16進数に変換できます。また、ToString(“x4”)と記述すると、0埋め4桁の16進数(0001など)に変換できます。

他には、Convertクラスを使っても16進数に変換できます。その場合は、第2引数に変換したい進数を指定します。

逆に、Convert.ToString()・Convert.ToInt32()を組み合わせると、16進数を10進数に変換できます。このような手順で、10進数と16進数の相互変換が可能になります。

2進数を16進数に変換

C#では、2進数と16進数も相互変換することができます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

10進数の変換と同様に、Convert.ToString()やConvert.ToInt32()を組み合わせることで、2進数と16進数を相互に変換できます。

さらに、この仕組みを利用すれば、8進数と16進数の相互変換も可能になります。

byte型配列を16進数に変換

C#では、byte配列と16進数の相互変換も可能です。以下に、実際のソースコードを見てみましょう。

ソースコードの先頭に、
using System;
using System.Collections.Generic;
を記述してください。

実行結果は以下のようになります。

BitConverterを使用することで、byte配列を16進文字列に変換できます。

この時、byte配列を16進文字列に変換すると、byte配列をハイフン (-) で結合した文字列として出力されます。なお、ハイフンはReplaceメソッドで置換(削除)されます。

16進数の判定

C#では、16進数か否かをUri.IsHexDigit()で判定します。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このように、16進数か否かはUri.IsHexDigit()で判定することができます。

16進数の計算

C#では、16進数同士の計算もできます。

実際のソースコードを見てみましょう。

実行結果は以下のようになります。

このように、16進数同士の計算結果が16進数で表示されていることが分かります。

SE
C#では16進数か否かをUri.IsHexDigit()で判定するのですね。
PM
そうです。そのほか、16進数同士の計算もできますよ。

C#での16進数変換について理解しよう

この記事では、C#で10進数や2進数などの数字と、16進数とを相互に変換する方法をご紹介しましたが、いかがでしたでしょうか。

さらに、文字列が16進数か否かを判定する方法や、16進数同士の簡単な計算方法についてもご紹介しました。

実際にご自身でC#のソースコードを書いて、理解を深めて行きましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags