public void UnPackTest2() { KPPDataHead head = new KPPDataHead(); MemoryStream stream = new MemoryStream(); head.SetField("CRC", 100L); head.SetField("SectionCount", (ushort)1); head.Pack(stream); byte[] buffer = stream.ToArray(); byte[] data = new byte[stream.Length]; Buffer.BlockCopy(buffer, 0, data, 0, data.Length); Assert.IsNotNull(data); Assert.IsTrue(data.Length == 21); Assert.IsTrue(data[0] == 'K'); Assert.IsTrue(data[1] == 'P'); Assert.IsTrue(data[2] == 'P'); //reset postition. stream.Position = 0; KPPDataHead newHead = new KPPDataHead(); newHead.UnPack(stream); Assert.IsTrue(newHead.GetField <ulong>("TotalSize") == 0UL); Assert.IsTrue(newHead.GetField <long>("CRC") == 100L); Assert.IsTrue(newHead.GetField <ushort>("SectionCount") == 1); }
/// <summary> /// 在数据头中获取具有指定名称字段数据信息 /// </summary> /// <typeparam name="T">字段数据信息类型</typeparam> /// <param name="name">字段名</param> /// <returns>返回指定名称所代表的数据信息</returns> /// <exception cref="KeyNotFoundException">指定的KEY不存在</exception> public T GetHeadField <T>(string name) { return(_head.GetField <T>(name)); }