我通过套接字从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个字节。
如何实现这一目标?
答案 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 });