views:

74

answers:

3

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.

+1  A: 

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;
    }
driis
A: 

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.

Eugene Cheverda
+3  A: 

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.

Erik van Brakel