Update ProtobufUtility.cs

This commit is contained in:
ALEXTANG
2023-05-20 11:01:38 +08:00
parent a9542646c1
commit 9359a81a96

View File

@@ -2,8 +2,10 @@
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using GameProto;
using Google.Protobuf;
using TEngine;
/// <summary>
@@ -151,11 +153,26 @@ public partial class ProtobufUtility
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="dataBytes"></param>
/// <param name="offset"></param>
/// <param name="bodyCount"></param>
/// <returns></returns>
public static T Deserialize<T>(byte[] dataBytes) where T : IMessage, new()
public static T Deserialize<T>(byte[] dataBytes, int offset, int bodyCount) where T : IMessage, new()
{
T msg = new T();
msg = (T)msg.Descriptor.Parser.ParseFrom(dataBytes);
msg = (T)msg.Descriptor.Parser.ParseFrom(dataBytes, offset, bodyCount);
return msg;
}
/// <summary>
/// 反序列化protobuf
/// </summary>
/// <param name="dataBytes"></param>
/// <param name="offset"></param>
/// <param name="bodyCount"></param>
/// <returns></returns>
public static CSPkg Deserialize(byte[] dataBytes, int offset, int bodyCount)
{
var msg = (CSPkg)CSPkg.Descriptor.Parser.ParseFrom(dataBytes, offset, bodyCount);
return msg;
}
@@ -168,4 +185,33 @@ public partial class ProtobufUtility
{
return cmdMerge & 65535;
}
private static readonly StringBuilder StringBuilder = new StringBuilder();
public static string GetBuffer(byte[] buffer)
{
StringBuilder.Length = 0;
StringBuilder.Append("[");
for (int i = 0; i < buffer.Length; i++)
{
if (i == buffer.Length - 1)
{
StringBuilder.Append(buffer[i]);
StringBuilder.Append("]");
}
else
{
StringBuilder.Append(buffer[i]);
StringBuilder.Append(",");
}
}
return StringBuilder.ToString();
}
public static void PrintBuffer(byte[] buffer)
{
Log.Debug(GetBuffer(buffer));
}
}