首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将二进制文件转换为文本

将二进制文件转换为文本
EN

Stack Overflow用户
提问于 2013-12-06 19:02:36
回答 4查看 5.8K关注 0票数 1

我有一个程序,可以从二进制格式的url中获取响应,但我不知道如何将其转换为文本文件。

代码语言:javascript
运行
复制
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(postString);
request.ContentLength = postBytes.Length;
Stream stream = request.GetRequestStream();
stream.Write(postBytes, 0, postBytes.Length);
stream.Close();

response = (HttpWebResponse)request.GetResponse();
Stream ReceiveStream = response.GetResponseStream();
string filename = "C:\\responseGot.txt";

byte[] buffer = new byte[1024];
FileStream outFile = new FileStream(filename, FileMode.Create);
int bytesRead;
while ((bytesRead = ReceiveStream.Read(buffer, 0, buffer.Length)) != 0) 
    outFile.Write(buffer, 0, bytesRead);

当我打开responseGot.txt时,它是一个二进制文件,我如何获取文本文件。

EN

回答 4

Stack Overflow用户

发布于 2013-12-06 19:25:36

你得到的响应是什么格式的?没有文本文件。只有二进制文件。HTTP也是100%二进制的。

文本是对字节的解释,它只作为正在运行的应用程序的一部分存在。您永远不能向文件中写入文本。您只能将文本转换为字节(使用各种方式)并写入字节。

因此,问问你自己,为什么你收到的字节不能被notepad.exe解释为文本。也许响应不是直接的文本,而是一个ZIP文件或其他什么。

  1. 您可以使用十六进制编辑器
  2. 猜测格式您可以询问网站所有者
票数 2
EN

Stack Overflow用户

发布于 2013-12-06 19:17:18

您没有在代码示例中显示将文件保存到任何位置。

但是要将响应转换为字符串,您可以使用:

代码语言:javascript
运行
复制
   using (HttpWebResponse response = req.GetResponse() as HttpWebResponse)   
    {  
      StreamReader reader = new StreamReader(response.GetResponseStream());
      string ResponseTXT = reader.ReadToEnd();
    }

然后你可以用常用的技术http://msdn.microsoft.com/en-us/library/6ka1wd3w%28v=vs.110%29.aspx保存它。

你是认真的吗?

票数 0
EN

Stack Overflow用户

发布于 2020-10-25 12:12:19

如今在数字计算中表示的每一个数据都是基于2比特的。二进制(电/磁信号:开/关或北/南)。写入磁盘的每个文件也是二进制文件,即。(8位)字节序列。ASCII/ANSI为每个字节序列定义了字符映射,256个字节中只有大约95个被称为可打印(文本)字符。

您下载的文件似乎不只是可打印的字符(通常称为纯文本文件)。要按原样查看文件(使用当前编码设置),请执行以下操作:

代码语言:javascript
运行
复制
type <file.ext>

要在其他代码页中查看,请执行以下操作:

代码语言:javascript
运行
复制
chcp <codepage>
type <file.ext>

要查看文件的(纯文本)表示,您需要首先对其进行编码(即.将其翻译成文本文件)例如。十六进制编码的字符串通过一些十六进制编辑器。十六进制序列的前几个字符应该给出一个magic number,表示正在读取的文件类型。然后使用相关的程序打开该文件(该程序能够打开这些类型的文件)。

如果是您期望的文本文件,而不是仅包含可打印(纯文本)字符的文件,则更有可能是对其应用了某种压缩/加密。再一次,魔术数字应该暗示文件应该如何处理,例如。在尝试读取数据/文件之前解压缩。(加密文件应附带解密提示/密钥,除非之前交换/同意)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20422257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档