public int ReadInteger()
{
var type = ReadByte();
if (type != Integer)
throw new InvalidOperationException("Invalid data type, INTEGER(02) is expected.");
var length = ReadLength();
var data = ReadBytes(length);
if (length > 4)
throw new InvalidOperationException("Integer type cannot occupy more then 4 bytes");
var result = 0;
var shift = (length - 1) * 8;
for (var i = 0; i < length; i++)
{
result |= data[i] << shift;
shift -= 8;
}
//return (int)(data[0] << 56 | data[1] << 48 | data[2] << 40 | data[3] << 32 | data[4] << 24 | data[5] << 16 | data[6] << 8 | data[7]);
return result;
}