免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2496 | 回复: 7
打印 上一主题 下一主题

问一个字符串和16进制数计算的问题. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-12-02 11:12 |只看该作者 |倒序浏览
char s[20];
char *p = NULL;

一个字符串变量s保存地址: strcpy(s, "f22b0000";
一个指针变量p = (char *)malloc(10000);
那么计算如何得到p的地址和s所保存的地址之间的差值呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-12-02 11:27 |只看该作者

问一个字符串和16进制数计算的问题.

原帖由 "lizhenjia" 发表:
ar *p = NULL;

一个字符串变量s保存地址: strcpy(s, "f22b0000";
一个指针变量p = (char *)malloc(10000);
那么计算如何得到p的地址和s所保存的地址之间的差值呢?

把它们直接相减就可以了。不过这样做有什么意义吗?
  1. #include <stdio.h>;

  2. int main()
  3. {
  4.         char s[20];
  5.         char *p = NULL;
  6.         strcpy(s, "f22b0000");
  7.         p = (char *)malloc(10000);
  8.         printf("%0xd\n",p - s);
  9.         return 0;
  10. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2003-12-02 14:32 |只看该作者

问一个字符串和16进制数计算的问题.

使用strtoll将s转化为16禁止
char   stop[20]
strtoll(s,&stop,16)

论坛徽章:
0
4 [报告]
发表于 2003-12-02 15:17 |只看该作者

问一个字符串和16进制数计算的问题.

to :lenovo   
我现在不是要把他们打印出来,而是根据这个差值作为偏移量加到另外的一个指针变量得到新的地址,如何用变量表示呢?如果地址比较大用strtol好像不行,比如fe650000,printf("%x\n", strtol("fe650000", NULL, 16))d的数据就不对了。
fe650000

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2003-12-02 15:21 |只看该作者

问一个字符串和16进制数计算的问题.

原帖由 "lizhenjia" 发表:
to :lenovo   
我现在不是要把他们打印出来,而是根据这个差值作为偏移量加到另外的一个指针变量得到新的地址,如何用变量表示呢?如果地址比较大用strtol好像不行,比如fe650000,printf("%x\n", strtol("fe65000..........

我还是没看怎么明白。
你要是把指针变量加起来就直接加呀。

论坛徽章:
0
6 [报告]
发表于 2003-12-02 15:28 |只看该作者

问一个字符串和16进制数计算的问题.

我得意思:
strcpy(s, "fe650000";
p = (char *)malloc(10000),假设p的地址是fe640000
现在我要计算s的地址和p的差,并付给另外一个指针变量!
是不是应该这样:p1 = strtol(s, NULL, 16) - p;
不过现在的问题是地址太大,strtol操作的结果显然不对,有没有正确计算差值并付给p的办法呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2003-12-02 15:33 |只看该作者

问一个字符串和16进制数计算的问题.

原帖由 "lizhenjia" 发表:
我得意思:
strcpy(s, "fe650000";
p = (char *)malloc(10000),假设p的地址是fe640000
现在我要计算s的地址和p的差,并付给另外一个指针变量!
是不是应该这样:p1 = strtol(s, NULL, 16) - p;
不过现在的?.........

你直接把它们相减然后赋值不行吗?

论坛徽章:
0
8 [报告]
发表于 2003-12-02 15:41 |只看该作者

问一个字符串和16进制数计算的问题.

strtol("fe640000
", NULL, 16) 's result is error!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP