質問

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 *に設定する必要があります。

これはあなたがあなたのデータをどこで置くか知っているので安全になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top