创建整数格式

本文关键字:格式 整数 创建 | 更新日期: 2023-09-27 17:49:17

我正在尝试使用c#进行网络连接,我正在尝试创建一种干净的方式来发送我的数据包,现在虽然我不会担心所有的数据包都包含在特殊字符中,我已经读过了,相反,数据包是三位数专用于传递给客户端的数据。例如,一个数据字符串可能如下所示:

LoginPacket is packet 000.

LoginPacket Data将为"000Username~Password"

我已经尝试过清理这个,所以我可以用更干净的方式写东西,并尝试这样做

SendPacket(000, new string { "data", "parameters" });

但是,发送整数000将立即转换为零。

是否有办法解决这个问题,或者我最好把它存储在一个字符串中,比如

SendPacket(new string { "000", "data", "params" } );

创建整数格式

当您将数字转换为文本时,您需要指定位数。数字0000都是0。但是字符串" 000 "answers" 0 "是不同的字符串。

使用

n.ToString("000");

确保你得到三个数字

我建议您使用命令类型后跟长度后跟有效负载

那么你的有效载荷可以是类似的结构。因此,login命令(0)将使用这样的结构:以长度字节开头,然后是用户名,然后是第二个长度字节,最后是密码。

例如:

0155 dan-o8password

请记住,这些都是以字节数组的形式传递过来的。所以你读取前4个字节(Int32,命令类型)

然后读取下一个Int32来计算负载的长度。这是你在第三次读取时将读取的字节数。

现在你知道命令是登录的,你可以实现登录特定的读取。

此外,我建议您创建一些扩展方法来简化此操作。如:流。ReadByte 流。ReadInt32 流。ReadInt64 Stream.ReadString(长度)

然后是一些特定于应用程序的扩展。像流。ReadLogin