如何将指针转换为字节数组?
第一个字节表示要遵循的字节数。
答案 0 :(得分:7)
安全的做法是对指向的数据进行复制。
如果您有一个字节*,那么您当然可以自己编写代码:
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而不是字节*,那么您可以使用这种有用的方法:
http://msdn.microsoft.com/en-us/library/ms146631.aspx
Marshal课上有很多有用的方法。
答案 1 :(得分:3)
好吧,byte*
不是数组对象。您可以获取数据的地址(使用fixed
等),但不的任意byte*
作为数据的开始 - 例如,它可能在偏移17处。
所以我建议:
byte[]
而不是byte[]
和copy over您想要的数据