1

少し前に書いた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());
}
4

1 に答える 1

0

BinaryWriter文字列は先行する7ビットのエンコードされた長さで書き込まれますが、これはクライアントが処理できないと思われます。おそらく、文字列をバイトに変換してから、長さの単語を追加するか、0で終了する必要があります。

数値を手動でバイトに変換する必要はありません。longとして書きたいものがある場合は、それをbyteキャストするだけです。つまり、の場合BinaryWriterbw、と書くことができますbw.Write((byte)longval);。長く書く-1には:bw.Write((long)(-1))

于 2011-03-12T07:11:29.817 に答える