Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将C#字符串转换为C字符数组_C#_C - Fatal编程技术网

将C#字符串转换为C字符数组

将C#字符串转换为C字符数组,c#,c,C#,C,我正在通过套接字从C向C发送一个字符串: write 5000 100 在C语言中,我使用空格分割收到的字符串 char **params = str_split(buffer, ' '); 然后访问第三个参数,并将100转换为Cchar。但是,我需要能够从C#发送一个数组的字符(每个字节),以便在C中使用它们 例如,假设我需要发送以下字符串: write 5000 当然,字节数组需要转换为C#中的字符串字符,可以通过StreamWriter发送StreamWriter接受字符的数组,每个字

我正在通过套接字从C向C发送一个
字符串

write 5000 100
在C语言中,我使用空格分割收到的
字符串

char **params = str_split(buffer, ' ');
然后访问第三个参数,并将
100
转换为C
char
。但是,我需要能够从C#发送一个
数组
字符
(每个
字节
),以便在C中使用它们

例如,假设我需要发送以下字符串:

write 5000

当然,
字节
数组
需要转换为C#中的
字符串
字符,可以通过
StreamWriter
发送
StreamWriter
接受
字符的
数组
,每个字符有2个字节,但我需要1个字节


如何才能做到这一点?

我不太明白你的问题,这是你想要的吗

byte[] bytes = Encoding.UTF8.GetBytes("your string");
反之亦然

string text = Encoding.UTF8.GetString(bytes);

我不太明白你的问题,这是你要找的吗

byte[] bytes = Encoding.UTF8.GetBytes("your string");
反之亦然

string text = Encoding.UTF8.GetString(bytes);

在C语言中,
char
的大小为1字节。因此,为了从C#中容纳它们,您需要发送
字节

对于您的问题,您似乎需要两种不同的输入:

C#

然后要将它们一起发送,我宁愿使用
,它允许您发送
字节[]
。因此,我们只需要(1)将
textFront
更改为
byte[]
,(2)将
textFront
转换为
byte
,最后(3)将组合变量作为
byte[]
发送

byte[] frontBytes = Encoding.ASCII.GetBytes(textFront); // no (1)

byte[] combined = new byte[frontBytes.Length + bytes.Length];
frontBytes.CopyTo(combined, 0);
bytes.CopyTo(combined, frontBytes.Length); //no (2)

Stream stream = new StreamWriter(); //no (3)
stream.Write(combined, 0, combined.Length);

在C语言中,
char
的大小为1字节。因此,为了从C#中容纳它们,您需要发送
字节

对于您的问题,您似乎需要两种不同的输入:

C#

然后要将它们一起发送,我宁愿使用
,它允许您发送
字节[]
。因此,我们只需要(1)将
textFront
更改为
byte[]
,(2)将
textFront
转换为
byte
,最后(3)将组合变量作为
byte[]
发送

byte[] frontBytes = Encoding.ASCII.GetBytes(textFront); // no (1)

byte[] combined = new byte[frontBytes.Length + bytes.Length];
frontBytes.CopyTo(combined, 0);
bytes.CopyTo(combined, frontBytes.Length); //no (2)

Stream stream = new StreamWriter(); //no (3)
stream.Write(combined, 0, combined.Length);

StreamWriter构造函数可能会接收编码参数。也许这就是你想要的

var sw = new StreamWriter(your_stream, Encoding.ASCII);
sw.Write("something");
还有可以写入字符串和字节[]的BinaryWriter类

var bw = new BinaryWriter(output_stream, Encoding.ASCII);
bw.Write("something");
bw.Write(new byte[] { 0x01, 0x20, 0x45 });

StreamWriter构造函数可能会接收编码参数。也许这就是你想要的

var sw = new StreamWriter(your_stream, Encoding.ASCII);
sw.Write("something");
还有可以写入字符串和字节[]的BinaryWriter类

var bw = new BinaryWriter(output_stream, Encoding.ASCII);
bw.Write("something");
bw.Write(new byte[] { 0x01, 0x20, 0x45 });

为什么您需要使用StreamWriter?我实际上不需要使用它。如果您使用Stream(与StreamWriter相反),那么您可以只发送字节。但不是角色。我对C#了解不多,所以如果您将StreamWriter用于字符,将Stream用于字节,会发生什么情况?或者在将每个字符直接写入流之前将其转换为字节(仅适用于ASCII)。我从一个网站上得到的,并做了一些调整。好吗?问题出在这里。。“写5000”部分是字符,但我想我想把字符和字节混合在一起。我想一个解决方案是只使用字节,但这需要改变我的通信方式,即先是命令的4个字节,然后是int值的4个字节,然后是字节数组。为什么需要使用StreamWriter?我实际上不需要使用它。如果使用Stream(与StreamWriter相反),则可以只发送字节。但不是角色。我对C#了解不多,所以如果您将StreamWriter用于字符,将Stream用于字节,会发生什么情况?或者在将每个字符直接写入流之前将其转换为字节(仅适用于ASCII)。我从一个网站上得到的,并做了一些调整。好吗?问题出在这里。。“写5000”部分是字符,但我想我想把字符和字节混合在一起。我想一个解决方案是只使用字节,但这需要改变我的通信方式,即先4个字节的命令,然后4个字节的int值,然后是字节数组。我的问题的答案不是发送字符,而是发送bytest。我的问题的答案不是发送字符,而是发送bytes,这正是我所需要的,谢谢你的文案,我只是在找also@user2914191太好了很高兴它适合你的需要。正是我所需要的,谢谢你的文案,我只是在寻找它also@user2914191太好了很高兴它适合你的需要。