好的,我正在构建服务器 <-> 客户端应用程序。
基本上服务器收到一个包含 header [2bytes]、加密 key [2bytes]和数据的数据包
我正在考虑构建类以将整个数据包 (byte[]) 加载到其中,然后使用内部类方法处理数据包。现在的问题。最好的方法是什么?我需要能够读取 Int16 Int32 String(int lenght) 并且可能是 float
编辑:有点像 binaryreader 但将 byte[] 作为输入
最佳答案
我会说 BinaryReader
是您的最佳选择。根据过去的经验,有时您需要从 BinaryReader 继承。一个主要示例是当您需要读取以 null 结尾的字符串时,因为 BinaryReader 读取长度前缀字符串。或者您可以编写自己的类,但最终会提供与 BinaryReader 相同的功能。
最后我可能会创建自己的类(class)。这样,如果您需要更改提取数据的方式,您只需编辑您的类即可。如果您使用 BinaryReader 编写整个项目并意识到您需要添加功能,您将搞砸。
public class MyBinaryReader : BinaryReader
{
public MyBinaryReader(byte[] input) : base(new MemoryStream(input))
{
}
public override string ReadString()
{
// read null-terminated string
}
}
关于C# 读取字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5070566/