C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

数値を、左側“0”詰めの文字数固定の2進数文字列にしたい

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■84885 / inTopicNo.1)  数値を、左側“0”詰めの文字数固定の2進数文字列にしたい
  
□投稿者/ 政吉 (20回)-(2017/08/16(Wed) 15:32:49)

分類:[.NET 全般] 

開発環境はVsisual Studio Community 2015、C# WPFでWindows 10タブレットで動作するアプリケーションを作成しています。
表題の通りなのですが、int型(32Bit分)の数値を2進数の文字列にしたいです。
例えば、

    int iBuff;
    string sBuff;

    iBuff = 0x1ffff;
    sBuff = iBuff.ToString("X8");

とやれば、sBuffには、16進数で、左側"0"詰めした8文字分の文字列"0001ffff"が入ります。
ですが、ToStringには、2進数の書式指定子が無いようです。

    sBuff = Convert.ToString(iBuff, 2);

とやると、sBuffには2進数の文字列が入りますが、左側に"0"で詰めて文字数を固定にする方法がわからないです。

この、16進数の1ffffを、左側0詰めした32文字分の2進数に変換する簡単な方法は無いでしょうか?
"0000000000000011111111111111111" となるようにしたいです。

引用返信 編集キー/
■84886 / inTopicNo.2)  Re[1]: 数値を、左側“0”詰めの文字数固定の2進数文字列にしたい
□投稿者/ Azulean (851回)-(2017/08/16(Wed) 16:24:13)
No84885 (政吉 さん) に返信
> この、16進数の1ffffを、左側0詰めした32文字分の2進数に変換する簡単な方法は無いでしょうか?
> "0000000000000011111111111111111" となるようにしたいです。

後ろに PadLeft をつけるだけ…ではお気に召しませんか?

sBuff = Convert.ToString(iBuff, 2).PadLeft(32, '0');

見た目がイマイチなら拡張メソッドをどこかに作っておけば、以降は楽に使えます。

public static class IntegerExtensions
{
  public static string ToBin(this int source, int digits)
  {
    return Convert.ToString(source, 2).PadLeft(digits, '0');
  }
}

sBuff = iBuff.ToBin(32);

引用返信 編集キー/
■84889 / inTopicNo.3)  Re[2]: 数値を、左側“0”詰めの文字数固定の2進数文字列にしたい
□投稿者/ 政吉 (21回)-(2017/08/16(Wed) 17:08:17)
Azuleanさん
全然お気に召します!!
PadLeft 知りませんでした。
ありがとうございました。m(_ _)m
即解決しました。

1時間くらい解決方法探してネット上を徘徊していました(^_^;)
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ