Как превратить байт [] в sbyte * в C #? - PullRequest
5 голосов
/ 23 августа 2010

У меня есть функция, которая хочет получить sbyte * буфер, как создать такой в ​​C # с нуля и из существующего байта []?

Ответы [ 2 ]

6 голосов
/ 23 августа 2010
// Allocate a new buffer (skip this if you already have one)
byte[] buffer = new byte[256];
unsafe
{
    // The "fixed" statement tells the runtime to keep the array in the same
    // place in memory (relocating it would make the pointer invalid)
    fixed (byte* ptr_byte = &buffer[0])
    {
        // Cast the pointer to sbyte*
        sbyte* ptr_sbyte = (sbyte*) ptr_byte;

        // Do your stuff here
    }

    // The end of the "fixed" block tells the runtime that the original array
    // is available for relocation and/or garbage collection again
}
3 голосов
/ 24 марта 2011

Приведения к массиву и последующего приведения к байту [] будет достаточно.

byte [] unsigned = {0, 1, 2};

sbyte [] подписано = (sbyte []) (Массив) без знака;

...