65

我收到了以二进制值返回的文本文件的内容:

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

如何将其转换为 ASCII?

4

5 回答 5

118

利用:

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

于 2011-07-02T03:07:44.880 回答
14

您可以使用:

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

但有时你会得到一个奇怪的数字而不是你想要的字符串。在这种情况下,当您看到原始字符串时,它可能包含一些十六进制字符。如果是这种情况,您可能想试试这个:

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

或者作为最后的手段:

System.Text.Encoding.Default.GetString(bytearray);
于 2011-07-02T03:22:59.093 回答
6
Encoding.ASCII.GetString(buf);
于 2011-07-02T03:07:56.167 回答
3

作为从流中读取数据到字节数组的替代方法,您可以让框架处理所有内容,只需使用StreamReader带有 ASCII 编码的设置来读取字符串。这样您就不必担心获得适当的缓冲区大小或更大的数据大小。

using (var reader = new StreamReader(stream, Encoding.ASCII))
{
    string theString = reader.ReadToEnd();
    // do something with theString
}
于 2011-07-02T03:22:43.603 回答
1

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 下的备注。

于 2011-07-02T03:37:11.170 回答