我试图用我刚才写的C ++程序重写一些代码,但我不确定是否/如何正确写入字节数组,或者我是否应该使用其他东西。我试图更改为C#.NET的代码如下所示。
unsigned char pData[1400];
bf_write g_ReplyInfo("SVC_ReplyInfo", &pData, 1400);
void PlayerManager::BuildReplyInfo()
{
// Delete the old packet
g_ReplyInfo.Reset();
g_ReplyInfo.WriteLong(-1);
g_ReplyInfo.WriteByte(73);
g_ReplyInfo.WriteByte(g_ProtocolVersion.GetInt());
g_ReplyInfo.WriteString(iserver->GetName());
g_ReplyInfo.WriteString(iserver->GetMapName());
}
答案 0 :(得分:0)
BinaryWriter
可能有效,尽管字符串是使用前面的7位编码长度编写的,我怀疑客户端无法处理。您可能必须将字符串转换为字节,然后添加长度字或0终止它。
无需手动将数字转换为字节。如果您要将long
写为byte
,则只需将其投射。也就是说,如果您的BinaryWriter
是bw
,那么您可以写bw.Write((byte)longval);
。要将-1
写为长bw.Write((long)(-1))
。