我在C#中阅读二进制文件时感到非常困惑。我有一个用于读取二进制文件的C++代码:
FILE *pFile = fopen(filename, "rb");
uint n = 1024;
uint readC = 0;
do {
short* pChunk = new short[n];
readC = fread(pChunk, sizeof (short), n, pFile);
} while (readC > 0);
并且它读取以下数据:
-156, -154, -116, -69, -42, -36, -42, -41, -89, -178, -243, -276, -306,...
我尝试将这段代码转换成C#,但无法读取此类数据。以下是代码:
using (var reader = new BinaryReader(File.Open(filename, FileMode.Open)))
{
sbyte[] buffer = new sbyte[1024];
for (int i = 0; i < 1024; i++)
{
buffer[i] = reader.ReadSByte();
}
}
我得到了以下数据:
100, -1, 102, -1, -116, -1, -69, -1, -42, -1, -36
我该如何获取类似的数据?
short
的大小并没有完全定义好;p 但是:我不反对。你应该把它作为一个答案添加进去。 - Marc Gravellsbyte
范围,所以作为sbyte
是永远不会起作用的。 - Marc Gravell