Как преобразовать UTF-8 byte [] в строку? - PullRequest
848 голосов
/ 16 июня 2009

У меня есть массив byte[], который загружается из файла, который, как мне кажется, известен, содержит UTF-8 . В некотором отладочном коде мне нужно преобразовать его в строку. Есть ли один лайнер, который сделает это?

Под прикрытием это должно быть просто выделение и memcopy , поэтому, даже если это не реализовано, это должно быть возможно.

Ответы [ 13 ]

2 голосов
/ 15 сентября 2016

В качестве альтернативы:

 var byteStr = Convert.ToBase64String(bytes);
1 голос
/ 01 февраля 2019

В дополнение к выбранному ответу, если вы используете .NET35 или .NET35 CE, вы должны указать индекс первого байта для декодирования и количество байтов для декодирования:

string result = System.Text.Encoding.UTF8.GetString(byteArray,0,byteArray.Length);
1 голос
/ 06 июля 2018

hier - это результат, когда вам не пришлось беспокоиться о кодировании. Я использовал его в своем сетевом классе и отправлял двоичные объекты в виде строки с ним.

        public static byte[] String2ByteArray(string str)
        {
            char[] chars = str.ToArray();
            byte[] bytes = new byte[chars.Length * 2];

            for (int i = 0; i < chars.Length; i++)
                Array.Copy(BitConverter.GetBytes(chars[i]), 0, bytes, i * 2, 2);

            return bytes;
        }

        public static string ByteArray2String(byte[] bytes)
        {
            char[] chars = new char[bytes.Length / 2];

            for (int i = 0; i < chars.Length; i++)
                chars[i] = BitConverter.ToChar(bytes, i * 2);

            return new string(chars);
        }
...