创建整数格式
本文关键字:格式 整数 创建 | 更新日期: 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" } );
当您将数字转换为文本时,您需要指定位数。数字000
和0
都是0。但是字符串" 000
"answers" 0
"是不同的字符串。
n.ToString("000");
确保你得到三个数字
我建议您使用命令类型后跟长度后跟有效负载
那么你的有效载荷可以是类似的结构。因此,login命令(0)将使用这样的结构:以长度字节开头,然后是用户名,然后是第二个长度字节,最后是密码。
例如:0155 dan-o8password
请记住,这些都是以字节数组的形式传递过来的。所以你读取前4个字节(Int32,命令类型)
然后读取下一个Int32来计算负载的长度。这是你在第三次读取时将读取的字节数。
现在你知道命令是登录的,你可以实现登录特定的读取。
此外,我建议您创建一些扩展方法来简化此操作。如:流。ReadByte 、流。ReadInt32 、流。ReadInt64 、 Stream.ReadString(长度)
然后是一些特定于应用程序的扩展。像流。ReadLogin