public uint ReadDoubleWord(long offset)
{
var localOffset = GetLocalOffset((uint)offset);
var segment = segments[GetSegmentNo((uint)offset)];
if(localOffset >= SegmentSize - 3) // cross segment read
{
var bytes = ReadBytes(offset, 4);
return BitConverter.ToUInt32(bytes, 0);
}
return unchecked((uint)Marshal.ReadInt32(segment + localOffset));
}