创建整数格式?

时间:2014-03-09 04:22:21

标签: c# int

我正在尝试使用C#建立网络,我正在尝试创建一种干净的方式来发送我的数据包,现在虽然我不会担心所有的包含在特殊字符中的数据包

LoginPacket是数据包000。

LoginPacket数据将是“000Username~Password”

我试图清理它,所以我可以用更干净的方式写东西,尝试这样的事情

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

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

有没有解决方法,或者我最好将它们全部存储在字符串中,例如

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

2 个答案:

答案 0 :(得分:0)

将数字转换为文本时,需要指定位数。数字0000均为零。但是字符串" 000"和" 0"是不同的字符串。

使用

n.ToString("000");

确保您获得三位数。

答案 1 :(得分:0)

我建议你使用命令类型,然后是长度,然后是 Payload

然后你的有效载荷可以是类似的结构..所以login命令(0)将使用一个结构,该结构以长度字节开头,后跟用户名,后跟第二个长度字节,最后是密码。

例如:

  

0155Dan-o8password

请记住,这一切都以字节数组的形式出现在线上。所以你读取前4个字节(Int32,Command Type)

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

现在你知道Command是登录的,你可以实现特定于登录的阅读。

此外,我建议您创建一些扩展方法,以使这更容易。 喜欢: Stream.ReadByte Stream.ReadInt32 Stream.ReadInt64 Stream.ReadString(length)

然后是一些特定于应用程序的扩展程序..例如 Stream.ReadLogin