對於閱讀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