代码之家  ›  专栏  ›  技术社区  ›  CodeXtack

从二进制文件c获取值类型#

  •  0
  • CodeXtack  · 技术社区  · 7 年前

    我试图在读取二进制文件时找出一些东西。

    在我的文件中,开头有一个长类型值(“8”),然后,根据文件的不同,下一个值将是字母(例如“E”)或另一个长类型值(例如“5”)。 我的问题是:我如何知道我在文件中读取的是什么样的数据值?

    我的代码如下所示:

            FileStream streamR = new FileStream(archivo, FileMode.Open, FileAccess.Read);
            BinaryReader reader = new BinaryReader(streamR);
    
            Boolean checkNext = false;
            Boolean bandHeadr = false;
            Boolean bandRank = false;
            long archivoPos;
    
            while (reader.BaseStream.Position != reader.BaseStream.Length)
            {
                if (bandHeadr == false)
                {
                    // HERE IT READS THE FIRST VALUE, ALWAYS A LONG TYPE VALUE
                    long header = reader.ReadInt64();
                    data.Add(header);
                    bandCabecera = true;
                }
    
                if (checkNext == false)
                {
                    try
                    {
                        // HERE I'M TRYING TO CHECK THE NEXT VALUE, BUT RETURNS AN ASCII CODE IF IT IS A LETTER
                        int ix = reader.PeekChar();
                    }
                    catch
                    {
                        // THIS WILL IF THE NEXT VALUE IS ANOTHER LONG
                        if (bandRank == false)
                        {
                            try
                            {
                                long rang = reader.ReadInt64();
                                rangO = rang;
                                button9.Enabled = false;
                            }
                            catch
                            {
                                // EMPTY CATCH
                            }
                            bandRank = true;
                        }
                    }
                    checkNext = true;
                }
           }
    

    我使用PeekChar是为了不移动到文件的下一个位置。

    1 回复  |  直到 7 年前
        1
  •  2
  •   ispiro    7 年前

    我如何知道我在文件中读取的是哪种数据值?

    (你 可以 试着看看它是否有意义,例如它是否必须是“A”或int-如果它不是“A”-它是int。但它也可能是int的第一个字节,恰好与ASCII(?)相同“A”的值。)