读取字节数组

时间:2017-10-27 23:40:29

标签: c# webservice-client

如何读取这个byte []值并将其转换为文本文件?

screen from Debugger

在DataType =“base64Binary”等文档中对此进行了描述,但我无法将其转换为人类可读的格式...

我试过了:

System.Text.Encoding.ASCII.GetString(gadsContent.Value)

得到了

?\b\0\0\0\0\0\0\0?ZY??Zr~?W5vp??\0?t??6@\b\t???pL\bm\b???8?????/^~????L?/Q@Q??????...
Convert.ToBase64String(gadsContent.Value)

得到了  

H4sIAAAAAAAAANVaWZPiWnJ+51cQNRETdnCrtAAC9XT1jDZACAm0guRwTAhtCLSAFrQ4/OCxw3/AL15+hp8c9ttM/y8fUUBR273d99qecEd3FTonM09uJzM/0Z9/W4...

更新

现在我读到这有压缩GZIP ...... 我该如何解压缩和解码?

3 个答案:

答案 0 :(得分:1)

如果文件包含base64编码的二进制数组,则需要执行以下步骤:

  1. 使用适当的文本编码(ASCII,UTF8等)以文本打开文件。如果需要,可以让.NET尝试检测编码。

  2. 将文字读入字符串。

  3. 使用Convert.FromBase64String()将字符串转换为字节数组。

  4. 我能想出的最短的例子如下:

    string text = System.IO.File.ReadAllText(filePath, Encoding.UTF8);
    byte[] byteArray = Convert.FromBase64String(text);
    

    如果您不知道编码,可以省略该参数,并希望.NET能够检测到它:

    string text = System.IO.File.ReadAllText(filePath);
    byte[] byteArray = Convert.FromBase64String(text);
    

答案 1 :(得分:0)

您可以使用System.Text.Encoding类在字符串和字节数组之间进行转换。根据输入字符串/字节数组的编码,使用此类中的相应属性。

以下是 UTF8 编码的示例。

var someString = "Some text input";

//Convert the string to byte array
var byteArray= System.Text.Encoding.UTF8.GetBytes(someString);

//Convert a byte array to string
var stringFromByteArray = System.Text.Encoding.UTF8.GetString(byteArray);

此类中还有许多其他编码选项。根据需要使用

  • UTF32
  • UTF8
  • 的Unicode
  • ASCII( Ascii就像真的很旧

答案 2 :(得分:0)

  

(这些不是文本字节,这不适用:假设这些是文本字节,你需要一个文本解码器:试试

     

System.Text.Encoding.ASCII.GetString(x.Value)

     

看到前两个字节是31,139,这应该意味着它是GZip字节。

Stack Overflow有一篇关于解码Gzip的文章:

Unzipping a .gz file using C#

此时我无法判断它是否是.tar.gz文件(首先是tar,然后是gzipped)。你必须解开它才能看到你得到的东西然后我们可以看看它。