微软在新版本的.net里引入了 system.Memory类库,其提供了 Span 用以操作连续内存,因此我们可以采用其提供的内存转换操作,直接转换内存内的信息类型,而不用复制一块新内存。
例子如下:
高效!!!
byte[] unsigned = { 0x00, 0xFF, 0x1F, 0x8F, 0x80 };
ReadOnlySpan<byte> bytesBuffer = unsigned;
ReadOnlySpan<sbyte> sbytesBuffer = MemoryMarshal.Cast<byte, sbyte>(bytesBuffer);
sbyte[] signed = sbytesBuffer.ToArray();