[C#] 10進数の数値を16進数の文字列に変換する方法

C#では、10進数の数値を16進数の文字列に変換するために、ToStringメソッドを使用します。

具体的には、数値に対してToString("X")を呼び出すことで、16進数の大文字表記の文字列が得られます。

小文字で表記したい場合はToString("x")を使用します。

例えば、int number = 255;に対してnumber.ToString("X")を実行すると、結果は"FF"となります。

この記事でわかること
  • 10進数を16進数に変換する方法
  • 16進数の文字列を整数に変換する方法
  • 16進数の文字列を0埋めする方法
  • 16進数をバイト配列に変換する方法
  • 16進数をカラーコードとして扱う方法

目次から探す

10進数を16進数に変換する方法

C#では、10進数の数値を16進数の文字列に変換するために、主にToStringメソッドを使用します。

このメソッドを使うことで、簡単に数値の表現を変更することができます。

以下にその方法を詳しく解説します。

ToString(“X”)メソッドの使い方

ToString("X")メソッドを使用すると、整数を16進数の文字列に変換できます。

引数に"X"を指定することで、16進数形式で出力されます。

using System;
class Program
{
    static void Main()
    {
        int number = 255; // 10進数の255
        string hexString = number.ToString("X"); // 16進数に変換
        Console.WriteLine(hexString); // 出力: FF
    }
}
FF

大文字と小文字の違い (“X” vs “x”)

ToStringメソッドの引数には大文字の"X"と小文字の"x"があります。

大文字の"X"は16進数を大文字で表示し、小文字の"x"は小文字で表示します。

using System;
class Program
{
    static void Main()
    {
        int number = 255; // 10進数の255
        string hexUpper = number.ToString("X"); // 大文字の16進数
        string hexLower = number.ToString("x"); // 小文字の16進数
        Console.WriteLine(hexUpper); // 出力: FF
        Console.WriteLine(hexLower); // 出力: ff
    }
}
FF
ff

例:整数を16進数に変換する

整数を16進数に変換する基本的な例です。

using System;
class Program
{
    static void Main()
    {
        int number = 1234; // 10進数の1234
        string hexString = number.ToString("X"); // 16進数に変換
        Console.WriteLine(hexString); // 出力: 4D2
    }
}
4D2

例:負の数を16進数に変換する

負の数を16進数に変換する場合も、ToStringメソッドを使用します。

負の数はそのまま16進数に変換されます。

using System;
class Program
{
    static void Main()
    {
        int number = -1234; // 10進数の-1234
        string hexString = number.ToString("X"); // 16進数に変換
        Console.WriteLine(hexString); // 出力: FFFFFF4D2
    }
}
FFFFFB2E

例:浮動小数点数を16進数に変換する

浮動小数点数を16進数に変換する場合、BitConverterクラスを使用します。

これにより、浮動小数点数をバイト配列に変換し、その後16進数に変換できます。

using System;
class Program
{
    static void Main()
    {
        float number = 123.45f; // 浮動小数点数
        byte[] bytes = BitConverter.GetBytes(number); // バイト配列に変換
        string hexString = BitConverter.ToString(bytes).Replace("-", ""); // 16進数に変換
        Console.WriteLine(hexString); // 出力: 00000000C8F5C28F

        // 16進数をバイト配列に変換(もとに戻す)
        byte[] bytes2 = new byte[hexString.Length / 2];
        for (int i = 0; i < bytes2.Length; i++)
        {
            bytes2[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
        }
        float number2 = BitConverter.ToSingle(bytes2, 0); // 浮動小数点数に変換
        Console.WriteLine(number2); // 出力: 123.45
    }
}
66E6F642
123.45

16進数の文字列を10進数に変換する方法

C#では、16進数の文字列を10進数の整数に変換するために、主にConvert.ToInt32メソッドint.Parseメソッドを使用します。

これらのメソッドを使うことで、簡単に数値の表現を変更することができます。

以下にその方法を詳しく解説します。

Convert.ToInt32メソッドの使い方

Convert.ToInt32メソッドを使用すると、16進数の文字列を10進数の整数に変換できます。

このメソッドは、変換する文字列と基数を指定することができます。

16進数の場合、基数は16です。

using System;
class Program
{
    static void Main()
    {
        string hexString = "FF"; // 16進数の文字列
        int number = Convert.ToInt32(hexString, 16); // 10進数に変換
        Console.WriteLine(number); // 出力: 255
    }
}
255

int.Parseメソッドの使い方

int.Parseメソッドも、16進数の文字列を10進数の整数に変換するために使用できます。

このメソッドも基数を指定することができ、16進数の場合は基数を16に設定します。

using System;
class Program
{
    static void Main()
    {
        string hexString = "4D2"; // 16進数の文字列
        int number = int.Parse(hexString, System.Globalization.NumberStyles.HexNumber); // 10進数に変換
        Console.WriteLine(number); // 出力: 1234
    }
}
1234

例:16進数文字列を整数に変換する

以下は、16進数の文字列を整数に変換する基本的な例です。

Convert.ToInt32メソッドint.Parseメソッドの両方を使用して、同じ結果を得ることができます。

using System;
class Program
{
    static void Main()
    {
        string hexString1 = "A3"; // 16進数の文字列
        string hexString2 = "1F4"; // 16進数の文字列
        // Convert.ToInt32メソッドを使用
        int number1 = Convert.ToInt32(hexString1, 16); // 10進数に変換
        Console.WriteLine(number1); // 出力: 163
        // int.Parseメソッドを使用
        int number2 = int.Parse(hexString2, System.Globalization.NumberStyles.HexNumber); // 10進数に変換
        Console.WriteLine(number2); // 出力: 500
    }
}
163
500

応用例

C#では、16進数の文字列をさまざまな形式に変換したり、特定の用途に応じて処理したりすることができます。

以下に、16進数の文字列に関するいくつかの応用例を紹介します。

16進数の文字列を0埋めする方法

16進数の文字列を特定の桁数に0埋めするには、PadLeftメソッドを使用します。

このメソッドを使うことで、指定した桁数に満たない場合に左側に0を追加できます。

using System;
class Program
{
    static void Main()
    {
        string hexString = "1A"; // 16進数の文字列
        string paddedHex = hexString.PadLeft(4, '0'); // 4桁に0埋め
        Console.WriteLine(paddedHex); // 出力: 001A
    }
}
001A

16進数の文字列をバイト配列に変換する方法

16進数の文字列をバイト配列に変換するには、Convert.FromHexStringメソッドを使用します。

このメソッドを使うことで、16進数の文字列を簡単にバイト配列に変換できます。

using System;
class Program
{
    static void Main()
    {
        string hexString = "4D2F"; // 16進数の文字列
        byte[] byteArray = Convert.FromHexString(hexString); // バイト配列に変換
        Console.WriteLine(BitConverter.ToString(byteArray)); // 出力: 4D-2F
    }
}
4D-2F

16進数の文字列をカラーコードとして扱う方法

16進数の文字列をカラーコードとして扱う場合、通常はRGB形式で表現されます。

以下の例では、16進数のカラーコードをRGB値に変換します。

using System;
class Program
{
    static void Main()
    {
        string hexColor = "#FF5733"; // 16進数のカラーコード
        int r = Convert.ToInt32(hexColor.Substring(1, 2), 16); // 赤
        int g = Convert.ToInt32(hexColor.Substring(3, 2), 16); // 緑
        int b = Convert.ToInt32(hexColor.Substring(5, 2), 16); // 青
        Console.WriteLine($"R: {r}, G: {g}, B: {b}"); // 出力: R: 255, G: 87, B: 51
    }
}
R: 255, G: 87, B: 51

16進数の文字列をバイナリに変換する方法

16進数の文字列をバイナリ形式に変換するには、まず16進数を整数に変換し、その後、整数を2進数の文字列に変換します。

以下の例では、16進数の文字列をバイナリ形式に変換します。

using System;
class Program
{
    static void Main()
    {
        string hexString = "1A"; // 16進数の文字列
        int number = Convert.ToInt32(hexString, 16); // 10進数に変換
        string binaryString = Convert.ToString(number, 2); // 2進数に変換
        Console.WriteLine(binaryString); // 出力: 11010
    }
}
11010

よくある質問

ToString(“X”)で桁数を指定することはできる?

はい、ToString("X")メソッドで桁数を指定することができます。

桁数を指定するには、"X"の後に数字を付け加えます。

例えば、ToString("X4")とすると、4桁の16進数に変換され、足りない桁は0で埋められます。

例:number.ToString("X4")

負の数を16進数に変換するときの注意点は?

負の数を16進数に変換すると、通常はその数の補数表現が使用されます。

C#では、負の整数は32ビットの補数形式で表現されるため、16進数に変換すると、先頭にFFFFFFが付くことがあります。

これは、符号ビットを考慮した結果です。

例:-1を16進数に変換するとFFFFFFFFになります。

16進数の文字列を大文字にする方法は?

16進数の文字列を大文字にするには、ToUpperメソッドを使用します。

これにより、16進数の文字列がすべて大文字に変換されます。

例えば、"a3".ToUpper()とすると、"A3"になります。

例:hexString.ToUpper()

まとめ

この記事では、C#における10進数と16進数の相互変換方法や、16進数の文字列をさまざまな形式に変換する応用例について詳しく解説しました。

特に、ToStringメソッドConvertクラスを利用した具体的なコード例を通じて、実際のプログラミングに役立つ情報を提供しました。

これを機に、16進数の扱いに関する理解を深め、実際のプロジェクトで活用してみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • URLをコピーしました!
目次から探す