我想从二进制文件中读取一个Unicode记录并存储在对象中,但缓冲区的最后一个字节不保存,为什么?从文件读取记录
b = new byte[55];
file.read(b, 0, b.length)
set(b);
private static int sizePtr = 4;
private static int sizeBf = 50;
private byte deleteTag ;
private byte []buf = new byte[sizeBf];
private byte []pointer = new byte[sizePtr];
public void set(byte[] b)
{
deleteTag = b[0];
Int32 l;
for (l = 0; l < sizeOfBuffer(); l++)
buf[l] = b[l+1];
for (int i = 0; i < sizePtr; i++, l++)
pointer[i] = b[l];
}
向我们展示'sizeOfBuffer()'的定义。另外,任何你不仅仅使用'Array.Copy()'而不是滚动你自己的字节复制循环的理由?这看起来像是一种非常类似于C的方式,可以通过使用C#习语和库函数来大大简化。 – siride
关于'buf [l] = b [l + 1];' - 为什么要跳过'b'的第一个条目? – Codor
@Codor可能是因为b [0]是deleteTag,我也猜测'sizeOfBuffer()= sizeBf'和55是由1 + 50 + 4构成的。 –