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

时间:2011-08-25 02:57:28

标签: c# string memory 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();
}

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

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

感谢

1 个答案:

答案 0 :(得分:5)

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

 var encoding = Encoding.ASCII;
 Console.WriteLine(encoding.GetString(bytes));

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

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