2011-08-25 118 views
1

你好我有我的代码这一部分:如何更改此代码,以便将其写入字符串?

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 bytes = new byte [4051];”有关但我不能写“字节”显然是一个新的字符串。

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()); 
相关问题