ソースRCONプロトコルで再生していますが、文字列をバイト配列に変換する際に問題があります。C# - バイト変換が正常に動作しない
オリジナルコード(VB.NET)+ペーストビン:http://pastebin.com/4BkbTRfD
Private Function RCON_Command(ByVal Command As String,
ByVal ServerData As Integer) As Byte()
Dim Packet As Byte() = New Byte(CByte((13 + Command.Length))) {}
Packet(0) = Command.Length + 9 'Packet Size (Integer)
Packet(4) = 0 'Request Id (Integer)
Packet(8) = ServerData 'SERVERDATA_EXECCOMMAND/SERVERDATA_AUTH (Integer)
For X As Integer = 0 To Command.Length - 1
Packet(12 + X) = System.Text.Encoding.Default.GetBytes(Command(X))(0)
Next
Return Packet
End Function
のC#+ペーストビンで私の現在のコード:http://pastebin.com/eVv0nZCf
byte[] RCONCommand(string cmd, int serverData)
{
int packetSize = cmd.Length + 12;
byte[] byteList = new byte[packetSize];
byteList[0] = (byte)packetSize;
byteList[4] = 0;
byteList[8] = (byte)serverData;
for(int X = 0; X < cmd.Length; X++)
{
byteList[12 + X] = Encoding.ASCII.GetBytes(cmd)[X];
}
return byteList;
}
私はEncoding.ASCII.GetString(RCONCommandを(」を使用単語 "、3));結果は四角いマークになります。 Encoding.UTF8.GetString()も試しましたが、同じ結果が得られました。
パケット構造は、ここで見つけることができます:https://developer.valvesoftware.com/wiki/Source_RCON_Protocol#Basic_Packet_Structure
私もバイトに精通し、そのようじゃないので、私はちょうど、私が間違って何をやったか、それを把握していません。 PS。人々は非常に多くのOOPを使用しており、何百万ものクラスファイルを作成しているため、正しいものを見つけることさえできないため、ソースRCONプロトコルのドキュメント用にC#で公開されているサンプルアプリケーションは文字化けしています。
'IPAddress.HostToNetworkOrder(size)'は、より簡単に少し入札できます – Fabio