我想从字符串中的一个字节得到位(0或1),但我不知道怎么做? 感谢。
答案 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;
}