从二进制文件中获取值类型 C#
Getting a value type from binary file c#
我在读取二进制文件时试图找出一些东西。
在我的文件中,开头有一个 long 类型的值 ('8'),然后,根据文件的不同,下一个值将是一个字母(例如 'E')或另一个 long (例如“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 是为了不移动到文件的下一个位置。
How can I know what kind of data value I'm reading on my file?
你不能。不是来自字节本身(与文件的扩展名等相反)。字节只是字节。它们代表什么取决于文件的编写者。
(你 可以 尝试看看它是否有意义,例如它是否必须是 'A' 或 int - 如果它不是 'A' - 它是一个 int。但它也可能是 int 的第一个字节,恰好与 'A' 的 ASCII(?) 值相同。)
我在读取二进制文件时试图找出一些东西。
在我的文件中,开头有一个 long 类型的值 ('8'),然后,根据文件的不同,下一个值将是一个字母(例如 'E')或另一个 long (例如“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 是为了不移动到文件的下一个位置。
How can I know what kind of data value I'm reading on my file?
你不能。不是来自字节本身(与文件的扩展名等相反)。字节只是字节。它们代表什么取决于文件的编写者。
(你 可以 尝试看看它是否有意义,例如它是否必须是 'A' 或 int - 如果它不是 'A' - 它是一个 int。但它也可能是 int 的第一个字节,恰好与 'A' 的 ASCII(?) 值相同。)