バイト*の特定のインデックスでintをバイト*に変換するにはどうすればよいですか?
理想的には、次のようなものが欲しいです。
unsafe{
byte* igm=stackalloc byte[8];
igm[4]=4283;
}
ビットの最初の部分をigm[4]に設定し、残りをigm[5]に設定します。
編集:私はこれを処理するための多くの可能な方法があるかもしれないことを理解しています、私は可能であれば最も効率的な方法を探しています。
バイト*の特定のインデックスでintをバイト*に変換するにはどうすればよいですか?
理想的には、次のようなものが欲しいです。
unsafe{
byte* igm=stackalloc byte[8];
igm[4]=4283;
}
ビットの最初の部分をigm[4]に設定し、残りをigm[5]に設定します。
編集:私はこれを処理するための多くの可能な方法があるかもしれないことを理解しています、私は可能であれば最も効率的な方法を探しています。
これを試して:
unsafe
{
byte* igm = stackalloc byte[8];
*(int*)(igm + 4) = 4283;
}
単純なポインタ演算を使用してバイト配列の任意の場所にインデックスを付けることができることに気付いたら、物事は非常に簡単になります。
お気づきかもしれませんが、C#の型システムではそれができなくなります。ただし、ポインタを適切なタイプにキャストすることができます。
unsafe
{
byte* igm = stackalloc byte[8];
int* intPtr = (int*)igm;
intPtr[1] = 4283;
}
intを分割してバイト数をsizeof(int)
カウントしてから、この部分を指定されたインデックスのバイト*に手動で設定する必要があります。
データをどこに何を配置するかがわかるので、これはより安全です。