C#中IntPtr类型转成byte[],再转回来却已经不是原来的IntPtr值了??

如图

图片说明图片说明

图1红框中是我临时调试的 目的就是想看看intptr转成byte[]后再转回来还是不是同一个值。结果确实不是!
图二就是在网上找的intptr和byte[]转换的方法。试了很多种就是转不回来!

对了,我的Intptr值来源于虹软人脸识别的特征值。并不是由其它转成的!

求大神指导一下。

这是肯定的,因为 IntPtr 是地址,你没办法保证转换回来的数据还在那个地址上。

Marshal.AllocHGlobal是请求了一块新的内存吧,当然会不一样啊。

IsValid函数写错了, Marshal.Copy函数最后一个参数IntPtr.Size在x86是固定的4,在x64是固定的8,所以返回的ys字节数组只有4个或者8个字节,一个人脸识别的特征值不可能只有4个或者8个字节吧?