IntPtr 如何偏移指定量

Acme_Thanatos 2017-06-13 02:42:17
.Net 4.0 及以上 IntPtr 可以 Add(IntPtr, Int32) ;
.Net 2.0 中 如何偏移呢
...全文
702 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bloodish 2017-06-14
  • 打赏
  • 举报
回复
引用 3 楼 qq_35593980 的回复:
[quote=引用 2 楼 bloodish 的回复:]

var ptr = IntPtr.Zero;
//ptr = (your pointer value);
var offset = 1;
ptr = new IntPtr(ptr.ToInt32() + offset);
//if 64bit system
//ptr = new IntPtr(ptr.ToInt64() + offset);
这个ToInt32() 还是64 是和生成的目标平台 的 x86 x64 AnyCpu 对应的 还是说和操作系统对应的[/quote] 之前回的按是不是64位系统判断还是有些问题,根据IntPtr.Size就肯定没问题.

            if(IntPtr.Size == sizeof(Int64))
                ptr = new IntPtr(ptr.ToInt64() + offset);
            else
                ptr = new IntPtr(ptr.ToInt32() + offset);
Acme_Thanatos 2017-06-14
  • 打赏
  • 举报
回复
引用 2 楼 bloodish 的回复:

var ptr = IntPtr.Zero;
//ptr = (your pointer value);
var offset = 1;
ptr = new IntPtr(ptr.ToInt32() + offset);
//if 64bit system
//ptr = new IntPtr(ptr.ToInt64() + offset);
这个ToInt32() 还是64 是和生成的目标平台 的 x86 x64 AnyCpu 对应的 还是说和操作系统对应的
bloodish 2017-06-13
  • 打赏
  • 举报
回复

var ptr = IntPtr.Zero;
//ptr = (your pointer value);
var offset = 1;
ptr = new IntPtr(ptr.ToInt32() + offset);
//if 64bit system
//ptr = new IntPtr(ptr.ToInt64() + offset);
xuggzu 2017-06-13
  • 打赏
  • 举报
回复
2.0没试过,不行用unsafe标志写指针代码代替

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧