huyu123333333
huyu123333333
采纳率60%
2020-05-29 16:10

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

20
已采纳

如图

图片说明图片说明

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

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

求大神指导一下。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 10月前

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

    点赞 评论 复制链接分享
  • hxycsdn9159 hxycsdn9159 10月前

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

    点赞 1 评论 复制链接分享
  • qq_28839753 Zelgius 10月前

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

    点赞 评论 复制链接分享