Байт [] в ASCII - PullRequest
       32

Байт [] в ASCII

45 голосов
/ 02 июля 2011

Я получил содержимое текстового файла, возвращенного в двоичных значениях:

Byte[] buf = new Byte[size];
stream = File.InputStream;
stream.Read(buf, 0, size);

Как я могу преобразовать это в ASCII?

Ответы [ 5 ]

87 голосов
/ 02 июля 2011

Использование:

System.Text.Encoding.ASCII.GetString(buf);

9 голосов
/ 02 июля 2011

Вы можете использовать:

System.Text.Encoding.ASCII.GetString(buf);

Но иногда вы получите странное число вместо нужной вам строки. В этом случае ваша исходная строка может иметь шестнадцатеричный символ, когда вы ее видите. Если это так, вы можете попробовать это:

System.Text.Encoding.UTF8.GetString(buf);

Или, в крайнем случае:

System.Text.Encoding.Default.GetString(bytearray);
5 голосов
/ 02 июля 2011
Encoding.ASCII.GetString(buf);
4 голосов
/ 02 июля 2011

В качестве альтернативы чтению данных из потока в байтовый массив вы можете позволить инфраструктуре обрабатывать все и просто использовать StreamReader, настроенный с кодировкой ASCII для чтения в строке.Таким образом, вам не нужно беспокоиться о получении соответствующего размера буфера или больших размеров данных.

using (var reader = new StreamReader(stream, Encoding.ASCII))
{
    string theString = reader.ReadToEnd();
    // do something with theString
}
1 голос
/ 02 июля 2011

Метод Encoding.GetString (Byte []) преобразовывает байты в строку.

При переопределении в производном классе декодирует все байты в указанном массиве байтов встрока.

Пространство имен : System.Text
Сборка : mscorlib (в mscorlib.dll)

Синтаксис

public virtual string GetString(byte[] bytes)

Параметры

bytes
    Type: System.Byte[]
    The byte array containing the sequence of bytes to decode.

Возвращаемое значение

Тип : System.String
Строка, содержащая результаты декодирования указанной последовательности байтов.

Исключения

ArgumentException        - The byte array contains invalid Unicode code points.
ArgumentNullException    - bytes is null.
DecoderFallbackException - A fallback occurred (see Character Encoding in the .NET Framework for complete explanation) or DecoderFallback is set to DecoderExceptionFallback.

Примечания

Если данные для преобразования доступны только в последовательных блоках (например, данные, считанные из потока) или если объем данных настолько велик, что его необходимо разделить на более мелкие блоки, приложениеследует использовать декодер или кодировщик, предоставленные методом GetDecoder или методом GetEncoder, соответственно, производного класса.

См.Замечания под Encoding.GetChars для более подробного обсуждения методов и соображений декодирования.

...