public void Write(PacketSize value, IMsgPackWriter writer)
        {
            writer.Write(DataTypes.UInt32);

            var binary = new UIntBinary(value.Value);

            byte[] bytes;
            if (BitConverter.IsLittleEndian)
            {
                bytes = new[]
                {
                    binary.byte3,
                    binary.byte2,
                    binary.byte1,
                    binary.byte0
                };
            }
            else
            {
                bytes = new[]
                {
                    binary.byte0,
                    binary.byte1,
                    binary.byte2,
                    binary.byte3,
                };
            }

            writer.Write(bytes);
        }
        public PacketSize Read(IMsgPackReader reader)
        {
            var type = reader.ReadDataType();

            if (type != DataTypes.UInt32)
            {
                throw ExceptionHelper.UnexpectedDataType(DataTypes.UInt32, type);
            }

            var allbytes  = reader.ReadBytes(4);
            var uintValue = new UIntBinary(allbytes);

            return(new PacketSize(uintValue.value));
        }