我如何更改此代码,以便它写入字符串?

Csh*_*rpz 1 c# memory string shared var

你好,我有这部分代码:

static void Main(string[] args)
{
    Console.WriteLine("Memory mapped file reader started");

    using (var file = MemoryMappedFile.OpenExisting("sensor"))
    {
        using (var reader = file.CreateViewAccessor(0, 3800))
        {
            var bytes = new byte[4051];

            Console.WriteLine("Reading bytes");
            for (var i = 0; i < bytes.Length; i++)
                Console.Write((char)bytes[i] + "");

            Console.WriteLine(string.Empty);
        }
    }

    Console.WriteLine("Press any key to exit ...");
    Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)

它打开共享内存,然后将其写入var字节并显示它.我怎么会把它写成一个字符串?我知道它与"var bytes = new byte [4051];"有关.但我显然不能将"byte"写入新字符串.

PS现在代码的输出(带数组)是简单的文本:ABCDEFG ...等

谢谢

Mar*_*k H 5

如果是您尝试编写的文本信息,只需选择编码,然后使用GetString数据.

 var encoding = Encoding.ASCII;
 Console.WriteLine(encoding.GetString(bytes));
Run Code Online (Sandbox Code Playgroud)

如果它是想要以文本形式显示的二进制数据(如十六进制),那么您将需要一个扩展方法或以其他方式进行转换.

static string ToHex(this byte[] data) {
    var builder = new StringBuilder(data.Length * 3);
    foreach (var b in data)
        buidler.Append(b.ToString("X2") + " ");
    return builder.ToString();
}

....

Console.WriteLine(bytes.ToHex());
Run Code Online (Sandbox Code Playgroud)