请问c#字符串 指针 int之间怎么转换啊

Byte_code 2011-01-18 05:06:23
1. 已知string str = "TEST!" 要求使指针 IntPtr p指向str或指针p的内容和str相同。
2. int i = 0x80; IntPtr p = new IntPtr(i); int这样转换成指针对吗?
3. IntPtr p = new IntPtr(0x80); int i = p.ToInt32(); 指针这样转换成int对吗?
4. 假如IntPtr p指向字符串"TEST!",怎么把p指向的字符串赋给一个string类型。

谢谢!
...全文
872 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhibin11 2011-01-19
  • 打赏
  • 举报
回复
用ref引用传递
csdn上也有相关文章例如这篇
http://blog.csdn.net/tanliyoung/archive/2006/09/14/1222186.aspx
Byte_code 2011-01-19
  • 打赏
  • 举报
回复
我提这个问题主要是因为不知道怎么在C#中用SendMessage(WM_COPYDATA)来通信:
两个进程用SendMessage(WM_COPYDATA)来通信(主要是发送和接收字符串),其中有一个程序是用C#写的,请问怎么做?要求有发送字符串及接收后的字符串解析!谢谢!

谢谢各位的回复!
lizhibin11 2011-01-19
  • 打赏
  • 举报
回复
此外还有一些情况必须用到指针,比如使用win32 API进行录放音,以及获取字符点阵等。
lizhibin11 2011-01-19
  • 打赏
  • 举报
回复
C#中使用指针在效率提升上有一定作用,尤其是在栈上的内存分配。
C#中指针的使用,很多情况下可以避免新对象的生成。
但对于C#的类和数据结构来说,没有必要使用指针。
vrhero 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yuwenge 的回复:]
引用 5 楼 sp1234 的回复:

你上一条刚刚取得指针,下一条语句执行时数据就可能浮动到内存别的地方了,这就是.net。

Unsafe代码中的指针都会乱跑的么?
[/Quote]
只有非托管资源的指针才是不变的(暂时)...托管资源指针无意义...

另外...指针长度因系统而异,只有32位系统才是int,64位系统是long...这也是微软为什么要搞IntPtr结构,就是为了消除平台差异...
卧_槽 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sp1234 的回复:]

你上一条刚刚取得指针,下一条语句执行时数据就可能浮动到内存别的地方了,这就是.net。
[/Quote]
Unsafe代码中的指针都会乱跑的么?
yucuihaimeng 2011-01-19
  • 打赏
  • 举报
回复
哦 没看到 unsafe...
yucuihaimeng 2011-01-19
  • 打赏
  • 举报
回复
C#中不用指针来处理的。。。 楼上申请个int* x会得到错误:“指针和固定大小缓冲区只能在不安全的上下文中使用”
lizhibin11 2011-01-18
  • 打赏
  • 举报
回复
第二三个问题,除了可以使用上面string的方法,也可以直接写不安全代码。
static unsafe void Main(string[] args)
{
fixed (int* x = new int[1])
{
*x = 5;
Console.WriteLine(x[0]);
byte y = *((byte*)x);
Console.WriteLine(y);
}
}
lizhibin11 2011-01-18
  • 打赏
  • 举报
回复
先说第一个问题和第四个问题
string str = "TEST!";
GCHandle gh = GCHandle.Alloc(str, GCHandleType.Pinned);
IntPtr itp = gh.AddrOfPinnedObject();//获得指针
Marshal.WriteByte(itp, 5);//将byte写入指针,其中第一个参数itp可以+1,+2等。
doubleu2005 2011-01-18
  • 打赏
  • 举报
回复
C#一般不用指针的,这也是它的特点吧,用指针的话还是C或C++
wuyq11 2011-01-18
  • 打赏
  • 举报
回复
NET不用指针,C#中字符串不需要指针操
  • 打赏
  • 举报
回复
你上一条刚刚取得指针,下一条语句执行时数据就可能浮动到内存别的地方了,这就是.net。
  • 打赏
  • 举报
回复
你用int.Parse()或者Convert.ToInt16试试!
龍过鸡年 2011-01-18
  • 打赏
  • 举报
回复
new IntPtr(int) int -> point
IntPtr.ToInt32 point -> int

IntPtr 结构
【更新至2025年】2001-2025年上市公司数字化转型年报词频统计(吴非、赵宸宇、甄红线)(300+年报词频统计) 1、时间:2001-2025年 2、来源:上市公司年报 3、参考文献:企业数字化转型与资本市场表现——来自股票流动性的经验证据(吴非) 数字化转型如何影响企业全要素生产率(赵宸宇) 知识产权行政保护与企业数字化转型(甄红线) 4、方法说明:(1)参考吴非老师的做法,对人工智能技术、大数据技术、云计算技术、区块链技术、数字技术运用五个维度76个数字化相关词频进行统计 (2)参考赵宸宇老师的做法,对数字技术应用、互联网商业模式、智能制造、现代信息系统四个维度99个数字化相关词频进行统计 (3)参考甄红线老师的做法,对技术分类、组织赋能、数字化应用等类别下139个数字化相关词频进行统计 5、指标:年份、股票代码、公司简称、行业名称、行业代码、全文-文本总长度、仅中英文-文本总长度、人工智能技术-吴、大数据技术-吴、云计算技术-吴、区块链技术-吴、数字技术运用-吴、数字技术应用-赵、互联网商业模式-赵、智能制造-赵、现代信息系统-赵、技术分类-人工智能技术-甄、技术分类-区块链技术-甄、技术分类-云计算技术-甄、技术分类-大数据技术-甄、组织赋能-人工智能技术-甄、组织赋能-云计算技术-甄、组织赋能-大数据技术-甄、组织赋能-广义数字技术-甄、数字化应用-技术创新-甄、数字化应用-流程创新-甄、数字化应用-业务创新-甄、人工智能、商业智能、图像理解、投资决策辅助系统、智能数据分析、智能机器人、机器学习、深度学习、语义搜索、生物识别技术、人脸识别、语音识别、身份验证、自动驾驶、自然语言处理、大数据、数据挖掘、文本挖掘、数据可视化、异构数据、征信、增强现实、混合现实、虚拟现实、云计算、流计算、图计算、内存计算、多方安全计算、类脑计算、绿色计算、认知计算等300+词频

111,131

社区成员

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

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

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