如何将指针转换为字节数组?
第一个字节表示接下来要跟随的字节数。
安全的做法是复制指向的数据。
如果您有一个byte*,那么您当然可以自己编写代码:
byte* source = whatever;
int size = source[0]; // first byte is size;
byte[] target = new byte[size];
for (int i = 0; i < size; ++i)
target[i] = source[i+1];
轻而易举。
如果你手上有一个IntPtr而不是byte*,那么你可以使用这个有帮助的方法:
http://msdn.microsoft.com/en-us/library/ms146631.aspx
在Marshal类中有很多有用的方法。
Buffer.BlockCopy
没有 byte*
的重载很奇怪。当然,我需要使用 unsafe
的情况也非常少见... - Marc Gravellbyte[]
引用指向未复制的数据。我怀疑这是可能的。 - tm1嗯,byte*
不是数组对象。你可以使用fixed
等方法获取数据的地址,但任意的byte*
并不一定是数据的起始位置 - 它可能在偏移量17处。
因此,我建议:
byte[]
byte[]
,并复制你想要的数据