.NET TIPS

2進数文字列と16進数文字列を相互に変換するには?

デジタルアドバンテージ
2003/09/12

 .NET Frameworkのクラス・ライブラリには、2進数文字列と16進数文字列とをダイレクトに変換するメソッドはない。しかし、Convertクラス(System名前空間)のstaticなメソッドを利用すれば、2/16進数から数値へ、あるいは数値から2/16進数への変換が行えるため、2進数と16進数を相互に変換することができる。

2/16進数→数値の変換

 2/16進数文字列から数値へは、ConvertクラスのToInt32メソッドを使用して変換できる。

int v1 = Convert.ToInt32("11111111", 2);
int v2 = Convert.ToInt32("ff", 16);

 この記述では、v1、v2ともにその値は255となる。

 ConvertクラスのToInt32メソッドは、「TIPS:文字列を数値に変換するには?」で解説しているように、文字列をint型の値に変換するメソッドだ。パラメータを2つ指定する上記のようなオーバーロードされたバージョンでは、第2パラメータに基数(2、8、16)を指定することにより、2/8/16進数文字列を数値に変換することができる。

 Convertクラスには、このような基数を第2パラメータで指定可能なメソッドとして、ToByte、ToInt16、ToInt32、ToInt64、ToSByte、ToUInt16、ToUInt32、ToUINt64、そしてToStringがある。

数値→2/16進数の変換

 数値から2/16進数文字列へは、ConvertクラスのToStringメソッドを使用して変換できる。

string binStr = Convert.ToString(255, 2);
string hexStr = Convert.ToString(255, 16);

 この記述では、binStは「11111111」、hexStrは「ff」となる。

 ConvertクラスのToStringメソッドは、さまざまな型の数値を文字列(10進数)に変換するためのメソッドであるが、ToInt32メソッドと同様に、第2パラメータで基数を指定することにより2/8/16進数文字列への変換が可能だ(この場合、第1パラメータはbyte、short、int、long型(Byte、Int16、Int32、Int64型)のみ)。

 次のサンプル・プログラムはこれら2つのメソッドを使用した例である。

// convhex.cs

using System;

public class ConvHexBin {
  static void Main() {

    // 2進数文字列、16進数文字列を数値へ変換

    string binStr = "11111111";
    string hexStr = "ff"; // 0xff, 0XFFなどもOK

    int v1 = Convert.ToInt32(binStr, 2);
    int v2 = Convert.ToInt32(hexStr, 16);

    Console.WriteLine(v1); // 出力:255
    Console.WriteLine(v2); // 出力:255

    // 数値を2進数文字列、16進数文字列へ変換

    binStr = Convert.ToString(v1, 2);
    hexStr = Convert.ToString(v2, 16);

    Console.WriteLine(binStr); // 出力:11111111
    Console.WriteLine(hexStr); // 出力:ff

    // 2進数→16進数

    Console.WriteLine(
      Convert.ToString(Convert.ToInt32(binStr, 2), 16));
    // 出力:ff

    // 16進数→2進数

    Console.WriteLine(
      Convert.ToString(Convert.ToInt32(hexStr, 16), 2));
    // 出力:11111111
  }
}

// コンパイル方法:csc convhex.cs
2/16進数の変換を行うC#のサンプル・プログラム(convhex.cs)

 最後の2つの処理は、ToStringメソッドとToInt32メソッドを組み合わせて2進数と16進数を相互に変換している。End of Article

カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Convertクラス(System名前空間)
関連TIPS:文字列を数値に変換するには?
 
この記事と関連性の高い別の.NET TIPS
数値←→3〜36進数文字列を相互に変換するには?
バイト列と数値を変換するには?
文字列を数値に変換するには?[C#、VB]
文字列を数値に変換するには?(TryParse編)
HTMLカラーの色名表記と16進表記を相互に変換するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間