.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 フォーラム 新着記事
  • エンドユーザーの言語設定を取得するには? (2014/10/23)
     エンドユーザーの言語設定を取得する方法はいくつかある。それらの方法で得られるものは何か、どの方法を使えばよいのかを本稿では解説する
  • WPF:DataGridなどにデータをソートして表示する (2014/10/21)
     WPFアプリでDataGridコントロールやListViewコントロールに表示されるデータを、プログラムコードの側からソートして表示する方法を解説する
  • 第1回 Forguncyに触ってみよう (2014/10/15)
     「Excel方眼紙」の「方眼紙」をもじった名前で話題となったForguncyの正式版がリリース。Forguncy連載スタート
  • WPF:リボンUIを実装するには? (2014/10/14)
     Windowsエクスプローラーなど、最近ではリボンを使用したアプリをよく目にするようになった。リボンを持ったWPFアプリを構築する方法を解説する
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ


- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

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

ソリューションFLASH

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

第3回 CCCM導入――実装の5ステップとその注意点
第2回では、クロスチャネル・キャンペーンマネジメント(以下、CCCM)導入における最初の...

レイ・カズン、1年間でEC年間売り上げ額が約2倍に拡大
ファッションブランド「Ray Cassin」を提供するレイ・カズンは10月22日、この1年間でEC事...

ベーシック、中小企業向け無料マーケティングオートメーションツール「Homeup!」ベータ版をリリース
創造カンパニーを掲げるベーシックは10月22日、中小企業をターゲットにした無料マーケテ...