将字节位作为字符串

时间:2009-09-27 13:44:29

标签: c# .net string

我想从字符串中的一个字节得到位(0或1),但我不知道怎么做?                   感谢。

5 个答案:

答案 0 :(得分:26)

看看Convert.ToString()。您可以两种方式使用它,转换字节 - >位串,反之亦然。

byte value = 56;
// There ...
string bits = Convert.ToString(value, 2);
// ...and Back Again
value = Convert.ToByte(bits, 2);

答案 1 :(得分:2)

这是clweek的重写方法,实际上有效:
我使用StringBuilder类而不是char数组。

示例:byteToBitsString(157)打印“00101111”

private string byteToBitsString(byte byteIn)
    {
        var bitsString = new StringBuilder(8);

        bitsString.Append(Convert.ToString((byteIn / 128) % 2));
        bitsString.Append(Convert.ToString((byteIn / 64) % 2));
        bitsString.Append(Convert.ToString((byteIn / 32) % 2));
        bitsString.Append(Convert.ToString((byteIn / 16) % 2));
        bitsString.Append(Convert.ToString((byteIn / 8) % 2));
        bitsString.Append(Convert.ToString((byteIn / 4) % 2));
        bitsString.Append(Convert.ToString((byteIn / 2) % 2));
        bitsString.Append(Convert.ToString((byteIn / 1) % 2));

        return bitsString.ToString();
    }

答案 2 :(得分:0)

这是一个很棒的方法:

public static string ByteToBinaryString(byte byteIn)
{
    StringBuilder out_string = new StringBuilder();
    byte mask = 128;
    for (int i = 7; i >=0 ; --i)
    {
        out_string.Append((byteIn & mask) != 0 ? "1" : "0");
        mask >>= 1;
    }
    return out_string.ToString();
}

答案 3 :(得分:0)

或者用这种方式敲击方式的豪华版本:

    public static string ToByteFormat(int valIn, int digits)
    {
        var bitsString = new StringBuilder(digits);
        int mask = (1 << digits - 1);
        for(int i = 0; i < digits; i++)
        {
            bitsString.Append((valIn & mask) != 0 ? "1" : "0");
            mask >>= 1;
        }
        return bitsString.ToString();
    }

答案 4 :(得分:-3)

我敢打赌,有一种更聪明的方法可以做到这一点,但它确实有效:

private string byteToBitsString(byte byteIn)
{
    char[] bits = new char[8];
    bits(0) = Convert.ToString((byteIn / 128) % 2);
    bits(1) = Convert.ToString((byteIn / 64) % 2);
    bits(2) = Convert.ToString((byteIn / 32) % 2);
    bits(3) = Convert.ToString((byteIn / 16) % 2);
    bits(4) = Convert.ToString((byteIn / 8) % 2);
    bits(5) = Convert.ToString((byteIn / 4) % 2);
    bits(6) = Convert.ToString((byteIn / 2) % 2);
    bits(7) = Convert.ToString((byteIn / 1) % 2);
    return bits;
}