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我添加了一个方法,可以让你将表示二进制数的字符串转换为十进制字节。请参阅我上面的修改和更新的帖子。非常感谢!很抱歉延迟回答