しばらく前に別の質問をしました(Click here to view the question)。あなたが私を与えたそのソースファイルを使用している場合C#:DynamicCastHelperで配列を構造体に移動すると問題が発生しました
は、これは私の問題です:
構造体を宣言するための他の方法を見つけることができなかったため、フグarray.Iの、「安全でない」としてマークされているpublic unsafe struct tPacket_5000_E
{
public Int16 size;
public Int16 opcode;
public byte securityCount;
public byte securityCRC;
public byte flag;
fixed byte blowfish[8]; //Please NOTE THIS
public Int32 seedCount;
public Int32 seedCRC;
public fixed Int32 securityseed[19];
};
構造体内の配列。
問題:パケットをその構造体に解析すると、関数はblowfish [8]に何も入れません。それは存在しません。代わりに、blowfishやsecurityseedの代わりにseedCountとseedCRCにバイトを入れます。 彼らは常に空です
これは私のコードです:
tPacket_5000_E packet = new tPacket_5000_E();
packet = (tPacket_5000_E)CDynamicCastHelper.CastIntoFields(packet, data2, CastOptions.ReverseDWord | CastOptions.ReverseDWord);
なぜそれが配列のために動作しませんか?それは安全でないからですか?
ありがとうございます!
私は間違っていますが、私はどこを見ますか? –
ここですばやく検索すると、回答が得られます。 – leppie
もし私がこれを書いているなら、 [MarshalAsAttribute(UnmanagedType.ByValArray、SizeConst = 8)] パブリックバイト[]ブローフィッシュ; CDynamicCastHelper.csにクラッシュする –