C# 将0和1的字符串转换为字节数组

C# 将0和1的字符串转换为字节数组,c#,textbox,byte,bit,C#,Textbox,Byte,Bit,我想在文本框中写入以下位序列,如下所示: byte[] byteBuffer = Encoding.ASCII.GetBytes(messageTextBox.Text); 000101100000000010000000100000000000000000011110011000000110000001100000011000000110000001100000011100000011100000011100001110000100111000011100110011001100110011

我想在文本框中写入以下位序列,如下所示:

byte[] byteBuffer = Encoding.ASCII.GetBytes(messageTextBox.Text);
00010110000000001000000010000000000000000001111001100000011000000110000001100000011000000110000001110000001110000001110000111000010011100001110011001100110011001100110011000010010000000111000000111000011100001100000011100001110000110000001110000110000001110000111000011000000111000011000000110000001100000011100001100000011100001110000111000010010010010010010011100001110000110000001110001110000001110001110000001110000111000010010011100001001110000100100111000011100001001001

但是每8位对应一个字节,所以我想将它们存储在
byte[]
数组中。当然,如果我这样读:

byte[] byteBuffer = Encoding.ASCII.GetBytes(messageTextBox.Text);
每个
0
1
都会变成一个完整的字节,这不是我想要的


是否有任何简单的解决方案,如某些现有方法,或者我必须开发自己的解决方案?

您可以使用
Convert.ToByte()
并执行以下操作:

string str = messageTextBox.Text;
byte[] byteBuffer = Enumerable.Range(0, str / 8).
                        Select(pos => Convert.ToByte(
                        str.Substring(pos * 8, 8),
                        2)).ToArray();

我在没有任何编译器的情况下编写了下面的代码,因此请为语法错误道歉-另外,您必须自己处理到达文本字符串结尾的问题,这不包括在内。我认为下面的方法符合你的要求

private bytes[] extractBytes (string text) {

    byte[] bytes = new byte[100];
    int i = 0;
    int j = 0;
    string currentByte = "";

    while (i <= text.Length) {

         currentByte += text.Substring(i, 1);

         i++;

         if (i % 8 == 0) {

             j++;

             bytes[j] = convertToDecimal(currentByte);
             currentByte = "";
         }
    )

    return bytes;
}
private bytes[]提取字节(字符串文本){
字节[]字节=新字节[100];
int i=0;
int j=0;
字符串currentByte=“”;

while(我)你用的是什么语言?在我看来像是C,但你可能想在你的帖子中添加适当的标记,只是为了弄清楚。对不起,我忘了。这是C,我得到了下一个错误:
值对于字符串中的无符号字节来说要么太大要么太小:
bytes[j]=byte.Parse(currentByte)当试图解析
00110001
时。我想这是因为系统不理解字符串表示二进制值,但我不知道如何正确地获取它。我明白了。您想从长字符串中提取什么?像“11001001”这样的字符串或者它的数字表示形式,例如34?@Ger我添加了一个方法,可以让你将表示二进制数的字符串转换为十进制字节。请参阅我上面的修改和更新的帖子。非常感谢!很抱歉延迟回答