对于阅读C#中的二进制文件,我确实很困惑。 我有C++代码读取二进制文件:将二进制读取函数从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
我怎样才能得到类似的数据?
在C++中,你正在阅读的每个实体作为'short',其为2个字节,而在C#中,正在阅读的每个实体作为'sbyte'这是1个字节。 – Jason 2012-03-16 09:12:32
@Jason肯定在C++中'short'的大小没有完全定义; p但是:我不反对。你应该添加这个答案。 – 2012-03-16 09:12:43
我不知道,没有C++经验;/ – Jason 2012-03-16 09:13:06