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

时间:2016-01-13 01:38:20

标签: c# c

我通过套接字从C#向C发送string

write 5000 100

在C中,我使用空格分割收到的string

char **params = str_split(buffer, ' ');

然后访问第3个参数,并将100转换为C char。但是,我需要能够从C#(每个array)发送chars byte,以便我可以在C中使用它们。

例如,让我们说我需要发送以下字符串:

write 5000 <byte[] { 0x01, 0x20, 0x45 }>

当然,byte array需要转换为C#中可以通过string发送的StreamWriter个字符。 StreamWriter接受array chars,每个{1}},每个2个字节,但我需要1个字节。

如何实现这一目标?

3 个答案:

答案 0 :(得分:0)

我不太明白你的问题,是你在寻找什么?

byte[] bytes = Encoding.UTF8.GetBytes("your string");

反之亦然

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

答案 1 :(得分:0)

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

您的问题似乎需要 两个 不同的输入:

<强> C#

string textFront = "write 5000"; //input 1
byte[] bytes = new byte[] { 0x01, 0x20, 0x45 }; //input 2

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

bytes

答案 2 :(得分:0)

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

var sw = new StreamWriter(your_stream, Encoding.ASCII);
sw.Write("something");

还有BinaryWriter类可以编写字符串和byte []。

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