开发者

How to set an int to byte* C#

How can I convert an int to a byte* at a certain index in a byte*?

Ideally I would like to have something like:

unsafe{
    byte* igm=stackalloc byte[8];
    igm[4]=4283;
}

It would set the first part of the bit to igm[4] and the rest into igm[5].

Edit: I realize there may be a lot of possible ways to handle this, i am looking for the most efficient way if开发者_如何转开发 possible.


try this:

unsafe
{
    byte* igm = stackalloc byte[8];
    *(int*)(igm + 4) = 4283;
}

Once you realize that you can use simple pointer arithmetic to index anywhere in your byte array, things get a LOT easier.


The type system in C# will prevent you from doing that, as you might have noticed. However, you can cast your pointers to be the appropiate types:

    unsafe
    {
        byte* igm = stackalloc byte[8];
        int* intPtr = (int*)igm;
        intPtr[1] = 4283;
    }


You need to break your int to sizeof(int) count of bytes and then manually set this parts to your byte* at specified indexes.

This will be safer as you'll know WHAT and WHERE you place your data.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜