2011-01-28 1 views
30

テキストボックスに1バイトを表示したい。バイトからバイナリ文字列へC# - すべての8桁を表示

Convert.ToString(MyVeryOwnByte, 2); 

をしかし、バイトがあるときのがcutedされているそれらの0を初めに0を持っています 今私は使用しています。 例:

MyVeryOwnByte = 00001110 // Texbox shows -> 1110 
MyVeryOwnByte = 01010101 // Texbox shows -> 1010101 
MyVeryOwnByte = 00000000 // Texbox shows -> <Empty> 
MyVeryOwnByte = 00000001 // Texbox shows -> 1 

私はすべての8桁の数字を表示したいです。

+0

参照: http://stackoverflow.com/questions/1644609/c-problem-with-byteと具体的にはhttp://stackoverflow.com/questions/1644609/c-problem-with-byte/1644666#1644666 –

+0

このコードは質問はすでに別のユーザによって誤解されています(http://stackoverflow.com/questions/22894695/preceding-0s-in-integer-value)。「MyVeryOwnByte」は実際には「バイト」ではありません(実際に使用されているC#コードであれば) '01010101'のようなリテラルは* 10進数(ゼロと1だけで構成される)です。それらの数字を構成するバイトの実際のビットはかなり異なって見えます。 –

+0

@ O.R.Mapper "擬似コード"のみです。 – Hooch

答えて

62
Convert.ToString(MyVeryOwnByte, 2).PadLeft(8, '0'); 

これは文字列で8つの文字

1

パッドゼロの文字列の合計のために「0」を左に空のスペースを記入します。この場合はPadLeft(length, characterToPadWith)です。非常に便利な拡張メソッド。 PadRight()は別の便利な方法です。

+1

'PadRight'は便利な方法ですが、このシナリオでは使用できません。私はそれをあなたの答えから削除することをお勧めします(または、他のすべての有用な.NETメソッドを追加することをお勧めします)。 –

+1

また、拡張メソッドではありません。 – Gabe

10

どのようにするかは、出力をどのように見えるかによって異なります。あなたが "000 " のような出力をしたい場合は、このような機能を使用し、

static string Pad(byte b) 
{ 
    return Convert.ToString(b, 2).PadLeft(8, '0'); 
} 

static string PadBold(byte b) 
{ 
    string bin = Convert.ToString(b, 2); 
    return new string('0', 8 - bin.Length) + "<b>" + bin + "</b>"; 
} 

あなただけの "00011011" は、このような関数を使用したい場合は

"0001 1011"のような出力をしたい場合は、このような関数が良いかもしれません:

static string PadNibble(byte b) 
{ 
    return Int32.Parse(Convert.ToString(b, 2)).ToString("0000 0000"); 
} 
+0

@Jeff: 'new string()'テクニックが役に立ちそうなので、このバージョンを投稿しました。あなたはグレゴリーの「PadRight」の言葉に疑問を呈しておらず、その機能は問題を解決しない。 – Gabe

+0

他の人の反応に私がどのように反応したかはまったく関係ありません。私はちょうどあなたがあなたが与えていないより良い解決策を参照して、あなたが持っていた提案が読んで特に簡単ではなかったと答えて、あなたの答えを軽視するのが奇妙だと思った。 SOは良い答えを得るためのリソースなので、PadLeftソリューションを完全にあなたの選択肢に含める方が良いでしょう - あなたはもっと良い答えかもしれません。これは最初のことではなく、最高のことです。 –

+0

@ジェフ:回答ごとに別々の投稿を好むので、重複していなくても簡単に回答を閲覧できます。しかし、今日は例外を作りましたが、3つの回答を1つの投稿に入れてしまったためです。 – Gabe

関連する問題