你好,我有这部分代码:
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 ......等
感谢
答案 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());