как я могу изменить этот код, чтобы он вместо этого записывал в строку? - PullRequest
1 голос
/ 25 августа 2011

привет, у меня есть эта часть моего кода:

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 ... и т. Д.

спасибо

1 Ответ

5 голосов
/ 25 августа 2011

Если вы пытаетесь написать текстовую информацию, просто выберите кодировку и используйте 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());
...