I think you can solve this problem in such way:
save CRC32 as uint (you've got some WriteLeUint functions inside ZipLib),
read them in such way:
uint crc2 = this.IntAsUint(inputBuffer.ReadLeInt());
where
private uint IntAsUint(int i)
{
return (uint)((0x80000000 & i) | (i & 0x7FFFFFFF));
}
this function converts int32->uint32 without using .NET convetions. That's something like C++: UINT ui = *((UINT*)&i))