.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進数文字列を相互に変換するには?
バイト列と数値を変換するには?
HTMLカラーの色名表記と16進表記を相互に変換するには?
文字列を数値に変換するには?
数値を右詰めや0埋めで文字列化するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ


- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

ITシステムやソリューションなどのBtoB購買者は何を求めているのか
ClickZ.comに掲載された記事では、Explore(探索)、Evaluate(評価)、Purchase(購買)...

富士通、オムロン草津工場にて「ものづくりビッグデータ分析」の実証実験を開始
富士通は4月22日、オムロンの草津工場において、プリント基板表面実装ラインの品質向上/...

第2回 ビジネスを継続していくために――BtoB企業に不可欠な「分析の知」
ビジネスを続けていくには、継続してお客さまを見つけることが必要。安定的な取引がある...