二进制,十进制,十六进制在我计算机学习的第一堂课就开始讲,计算机上的所有文件都是二进制形式储存的,文本文件其实也是二进制文件。但对于二进制文件的操作一直没有真正的接触过,我个人以前是做WEB开发的,用PHP开发了3年多了,文件的操作都是文本文件。数据的结构也是基于文本文件,如“a=你好||b=nihao”,那么我的做法是打开这个文本文件后,赋值给一个字符串变量,然后拆分特殊符号"||",然后再拆分=号等等的操作。
对于图片,二进制文件的操作并未真正的接触到。现在我在转型做WINDOWS开发,采用C#做为开发语言。c#还在学习中。今天遇到一个问题,存储一个配置文件。按照我以前的做法,直接储存XML或文件文件。想到我为什么不可以用二进制形式来储存。为了不是说快速解决这个问题。而是练手。我如何操作二进制文件。在网上找了一圈,也没有看明白,所以想请问一下,我如何来操作而精制文件,比如说,我想将"pzz"用ACSII码转换为二进制储存
 p=112=00110011 z=122=00010111 z=122=00010111
那么,我使用C#如何来存储这三个字节为一个文件(如nihao.pzz)?如何来读取这三个字节?如何来判断这三个字节是否是我需要的pzz?不好意思,如果这里有什么基础性的错误,概念性的错误等,还请指出!

解决方案 »

  1.   

    不需要想那么复杂,一般用到byte就足够了。操作二进制文件流通常需要结合Byte []和FileStream,网上文章一大堆,不妨自己搜索下吧。
      

  2.   

    using System;
    using System.IO;class FStream
    {
        static void Main()
        {
            const string fileName = "Test#@@#.dat";        // Create random data to write to the file.
            byte[] dataArray = new byte[100000];
            new Random().NextBytes(dataArray);        using(FileStream  
                fileStream = new FileStream(fileName, FileMode.Create))
            {
                // Write the data to the file, byte by byte.
                for(int i = 0; i < dataArray.Length; i++)
                {
                    fileStream.WriteByte(dataArray[i]);
                }            // Set the stream position to the beginning of the file.
                fileStream.Seek(0, SeekOrigin.Begin);            // Read and verify the data.
                for(int i = 0; i < fileStream.Length; i++)
                {
                    if(dataArray[i] != fileStream.ReadByte())
                    {
                        Console.WriteLine("Error writing data.");
                        return;
                    }
                }
                Console.WriteLine("The data was written to {0} " +
                    "and verified.", fileStream.Name);
            }
        }
    }以上为MSDN的FileStream类的WriteByte()的帮助,请参考:
    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref12/html/M_System_IO_FileStream_WriteByte_1_a5f36765.htm