C# 读取字节数组

标签 c# arrays packet

好的,我正在构建服务器 <-> 客户端应用程序。

基本上服务器收到一个包含 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/

相关文章:

c# - Form.Show(null) 是什么意思?

c - 将输入的数据存储在数组中

javascript - 将 Tagify javascript 数组转换为字符串

linux - 故意丢弃数据包

java - 为什么我从数据包中得到负目标地址

c# - 在 Asp.Net 5 中,wwwroot/web.config 中的 %DNX_PATH% 来自哪里?

c# - 使用where条件查询数据表

xml - 数据报包到 xml

c# - 如何使用 Lambda 语法从列表中删除

Java:带有对象和空值的 Arrays.sort(...)