如何读取 C# .NET 中的二进制数据,然后将其转换为字符串?

发布于 2024-10-26 13:48:17 字数 68 浏览 3 评论 0原文

与使用 StreamReader/Filestream 相反,我想从文件中读取二进制数据并在文本框中显示该数据(格式化)。

As opposed to using StreamReader/Filestream I want to read binary data from files and show that data (formatted) in a textbox.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

紫竹語嫣☆ 2024-11-02 13:48:17

那么二进制数据就像潜在的不可打印数据一样吗?如果您想将数据打印为十六进制字符串,请将数据作为字节数组,然后转换为十六进制表示形式。

string path = @"path\to\my\file";
byte[] data = File.ReadAllBytes(path);
string dataString = String.Concat(data.Select(b => b.ToString("x2")));
textBox.Text = dataString;

So binary data as in potentially non-printable data? Well if you want to print the data out as a hex string, take the data as an array of bytes then convert to a hex representation.

string path = @"path\to\my\file";
byte[] data = File.ReadAllBytes(path);
string dataString = String.Concat(data.Select(b => b.ToString("x2")));
textBox.Text = dataString;
荒岛晴空 2024-11-02 13:48:17

当需要读取二进制文件时,存在不同的情况,因为不清楚您真正想要实现的目标是:

  • 读取随机文件并显示为一系列十六进制值(类似于 Visual Studio 或任何其他二进制文件中的二进制文件视图)观众)。 Jeff M 的回答完美地涵盖了这一点。
  • 使用二进制序列化读取和写入您自己的对象。检查 MSDN 上的序列化演练 - http://msdn.microsoft.com/en-us /library/et91as27.aspx 并读取 BinaryFormatter 对象。
  • 读取别人的二进制格式(如 JPEG、PNG、ZIP、PDF)。在这种情况下,您需要了解文件的结构(您通常可以找到文件格式文档)并使用 BinaryReader 读取文件的各个块。对于大多数常见的文件格式,很容易找到允许以更方便的方式读取此类文件的现有库。关于 BinaryReader 的 MSDN 文章也有基本用法示例: http://msdn .microsoft.com/en-us/library/system.io.binaryreader.aspx

There are different cases when one need to read binary file, since it is unclear what you really trying to achieve here are some:

  • read random file and display as series of hex values (similar to binary file view in Visual Studio or any other binary file viewer). Berfectly covered by Jeff M's answer.
  • Reading and writing your own objects using binary serialization. Check serialization walkthrough on MSDN - http://msdn.microsoft.com/en-us/library/et91as27.aspx and read on BinaryFormatter objects.
  • Reading someone elses binary format (like JPEG, PNG, ZIP, PDF). In this case you need to know structure of the file (you can often find file format documentation) and use BinaryReader to read individual chunks of the file. For most of the common file formats it is easy to find existing libraries that allow reading such files in more convinient way. MSDN article on BinaryReader have basic usage sample also: http://msdn.microsoft.com/en-us/library/system.io.binaryreader.aspx.
当梦初醒 2024-11-02 13:48:17

使用 BinaryReader 读取文件。然后以 Base64 格式对从文件读取的字节数组进行编码,并在文本框中分配 Base64 编码的字符串

更新:

从文件读取的字节数组可以在分配给文本框进行显示之前以各种文本编码进行编码。查看 .net 类中与字符编码格式相关的以下命名空间:

  • System.Text.ASCIIEncoding
  • System.Text.UTF8Encoding
  • System.Text.UnicodeEncoding
  • System.Text.UTF32Encoding
  • System.Text.UTF7Encoding

请确保您知道确切的编码在进行从字节数组到编码字符串的任何转换之前,先检查目标文件。或者您可以检查该文件 BOM 字节。

更新(2):

请注意,您无法使用任何System.Text 类转换非文本文件(例如图像文件、音乐文件)。否则,在文本框中显示对您来说是没有意义的。

Use BinaryReader to read the file. Then encode the byte array that read from file in base64 format and assign the base64 encoded string in the textbox

UPDATE:

The byte array that read from file can be encoded in various text encoding before assigning to textbox for display. Take a look at following namespaces in .net class that related to characters encoding format:

  • System.Text.ASCIIEncoding
  • System.Text.UTF8Encoding
  • System.Text.UnicodeEncoding
  • System.Text.UTF32Encoding
  • System.Text.UTF7Encoding

Please ensure that you know the exact encoding of the target file before making any conversion from byte array to encoded string. Or you can check that file BOM bytes.

UPDATE (2):

Please note that you can't convert non-text file (eg image file, music file) using any of System.Text class. Otherwise it is meaning-less for you to display in the textbox.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文