INTをバイト* C#に設定する方法
-
13-09-2020 - |
質問
Byte *の特定のインデックスで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)
のバイト数に分割してから、この部分を指定されたインデックスで手動であなたのbyte *に設定する必要があります。
これはあなたがあなたのデータをどこで置くか知っているので安全になります。
所属していません StackOverflow