public uint ReadUInt32()
{
if (this.position + 3 >= this.length)
{
throw new Exception("bufferReader out of bound.");
}
int part1 = (int)this.buffer[this.position++];
int part2 = (int)(this.buffer[this.position++] << 8);
int part3 = (int)(this.buffer[this.position++] << 16);
int part4 = (int)(this.buffer[this.position++] << 24);
return (uint)(part1 + part2 + part3 + part4);
}