web-dev-qa-db-ja.com

バイトからバイナリ文字列C#-8桁すべてを表示

テキストボックスに1バイトを表示したい。今私は使用しています:

Convert.ToString(MyVeryOwnByte, 2);

ただし、バイトの先頭に0が含まれている場合、それらの0がカットされます。例:

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

8桁すべてを表示したい。

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

これにより、左側の空のスペースが「0」で埋められ、文字列内の合計8文字になります。

68
WraithNath

どのように行うかは、出力をどのように見せたいかによって異なります。

「00011011」だけが必要な場合は、次のような関数を使用します。

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

「000」のような出力が必要な場合11011"、次のような関数を使用します。

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

「0001 1011」のような出力が必要な場合は、次のような機能の方が優れている場合があります。

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

文字列にゼロを埋め込みます。この場合、PadLeft(length, characterToPadWith)です。非常に便利な拡張メソッド。 PadRight()は別の便利な方法です。

1

拡張メソッドを作成できます:

public static class ByteExtension
{
    public static string ToBitsString(this byte value)
    {
        return Convert.ToString(value, 2).PadLeft(8, '0');
    }
}
0
Mariusz Jamro