我有一个程序可以接收二进制序列化的网络数据包。我目前有一种通过使用指针将数据直接从字节数组存储到结构中的方法。但是我现在需要的是一种在结构中存储 UTF 字符串的方法,同时仍然保持从字节数组复制的简单方法。假定该字符串以无符号短整数为前缀,指示字符串的长度(以字节为单位)。这是 C# 在内部存储 char[] 或字符串的方式,还是我需要创建自己的结构来存储它?
我当前的结构布局是这样的:
public struct GenericPacket
{
public short packetid;
public static GenericPacket ReadUsingPointer(byte[] data)
{
unsafe
{
fixed (byte* packet = &data[0])
{
return *(GenericPacket*)packet;
}
}
}
}
使用指针读取只需要一个字节数组并返回一个指向它的指针,但作为一个 GenericStruct。这适用于所有普通类型,但字符串更复杂。
感谢您的任何想法!