// 書き出す
        public void WriteToBuf(Buf b, ValueType type)
        {
            switch (type)
            {
            case ValueType.Int:
                b.WriteInt(IntValue);
                break;

            case ValueType.Int64:
                b.WriteInt64(Int64Value);
                break;

            case ValueType.Data:
                b.WriteInt((uint)Data.Length);
                b.Write(Data);
                break;

            case ValueType.Str:
                b.WriteStr(StrValue.Trim());
                break;

            case ValueType.UniStr:
                byte[] data = Str.Utf8Encoding.GetBytes(StrValue.Trim());
                b.WriteInt((uint)data.Length + 1);
                b.Write(data);
                b.WriteByte(0);
                break;
            }
        }
        // 書き出す
        public void WriteToBuf(Buf b)
        {
            // 名前
            b.WriteStr(this.name, true);

            // 種類
            b.WriteInt((uint)this.type);

            // 項目数
            b.WriteInt(this.Count);

            // 値
            uint i;

            if (this.Count > Pack.MaxValueNum)
            {
                throw new OverflowException();
            }
            for (i = 0; i < this.Count; i++)
            {
                Value v = this.GetValue(i);

                v.WriteToBuf(b, this.type);
            }
        }
        public Buf SaveToBuf()
        {
            Buf b = new Buf();

            b.WriteInt64((ulong)this.TimeStamp.Ticks);
            b.WriteInt((uint)this.EntryList.Count);

            foreach (FullRouteIPInfoEntry e in this.EntryList)
            {
                b.WriteInt(e.From);
                b.WriteInt(e.To);
                b.WriteStr(e.Registry);
                b.WriteInt(e.Assigned);
                b.WriteStr(e.Country2);
                b.WriteStr(e.Country3);
                b.WriteStr(e.CountryFull);
            }

            b.Write(Secure.HashSHA1(b.ByteData));

            b.SeekToBegin();

            return(b);
        }
        // バッファに変換
        public Buf WriteToBuf()
        {
            Buf b = new Buf();

            // 要素数
            b.WriteInt((uint)elements.Count);

            // 要素
            foreach (Element e in elements)
            {
                e.WriteToBuf(b);
            }

            b.SeekToBegin();

            return(b);
        }