首页
社区
课程
招聘
[旧帖] [求助]请教小虾版主,小虾请进。 0.00雪花
发表于: 2009-5-13 14:36 2965

[旧帖] [求助]请教小虾版主,小虾请进。 0.00雪花

2009-5-13 14:36
2965
你会无法理解的原因是:你将char类型的单字节类型和int类型的多字节类型来进行对比是无法理解的,在char单字节类型之中是没有高端低端之分的,因为他只有一个字节。而在int多字节类型中才有高端低端之分。所以,对于i变量来说,内存中的xxxxxxxx 45 32 00 00(45320000)已经将45放到高端位置了,而对于char变量类型来说,内存中xxxxxxxx指向的数据没有高低之分,只有当前字节之分,所以对于char来说xxxxxxxx 45 32 00 00,45是第一个字节,32是第二个字节。。。。

是在“【求助】用C语言查看内存 ”你回答的,我有点问题想确认下。
1,你上面写内存中数据xxxxxxxx 45 32 00 00,内存地址从左到右是升高,对吧?
2,既然在内存中已经将45放到高字节,32放到低字节,就算用char指针来访问时也应该从低字节到高字节访问啊,所以输出顺序不也应该是32,45吗?

谢谢,问题困扰很长时间了。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
对的


你自己跟自己矛盾了,32明显在45后边,当然是32在高地址中

ps.
1.高位存高地址,低位存低地址
2.下次最好不要点将
2009-5-13 17:44
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不好意思啊,老没人回答~~555~~
int i=0x3245;i变量在内存中应该是45在高位,32在低位吧?(大端存储),但是如果内存地址从左到右是升高,xxxxxxxx 45 32 00 00,45不是在低位了?
2009-5-13 17:59
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
高端位和低端位不是按内存地址来看的,而是按整数数值来看的。如你的数0x00003245,此时在你看到32是在千位百位,所以是属高位,45在十位个位,所以是属于低位。而存入内存地址之后,这个数如果你再用整数值来看的话,你就会看成是0x45320000(xxxxxxxx 45 32 00 00)的整数来看,此时45在千万位的位置,所以45从整数值来看就是属于高端位了,而32是十万位,从整数值来看就是低位了。
2009-5-13 19:33
0
雪    币: 723
活跃值: (81)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
看看什么叫 MSB ?   什么叫 LSB 吧

http://bbs.pediy.com/showthread.php?t=88019   2楼
2009-5-13 21:06
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
原来是这样子~明白了,谢谢~非常感谢~~困扰我好几天了~~
2009-5-13 23:09
0
游客
登录 | 注册 方可回帖
返回
//