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

本文关键字:字符 数组 转换 字符串 | 更新日期: 2023-09-27 18:30:13

我通过套接字将string从 C# 发送到 C:

write 5000 100

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

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

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

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

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

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

如何做到这一点?

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

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

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

C#

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

然后将它们一起发送,我宁愿使用允许您发送byte[] Stream.因此,我们只需要(1(将textFront更改为byte[],(2(与bytes连接textFront,最后(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);

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

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

反之亦然

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

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

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 });