怎么访问一个整型数里面的各个字节
2014-11-19 10:21
375 查看
http://blog.csdn.net/wanwenweifly4/article/details/6445898
刚刚在讨论字节序的问题的时候出现了这么一个问题,怎么访问一个整型变量里面的各个字节,我们知道,如果要访问这个整型最低地址一个字节的数据的话,可以通过如下方式:
char a = *(char*)&整型变量名;
这里先将整型数通过取地址符号获得变量的开始的地址,为什么要(char*)进行强制类型转换呢,因为对于整型数据的话,表示的就是以首地址开始的4个字节,它是一个整体,取它的地址后,地址对应的类型为int*类型,即如果通过这个指针访问的话,只能访问到整个4个字节的空间的数据,没法访问单个字节。通过(char*)就将int*整型指针类型转换为字符型指针类型。这样就可以访问低地址这个字节的数据啦。那么如果我想访问第2个,第3个,第4个字节的数据呢。我们先来看看以下表示:
char * pc = (char*)&整型变量名;
pc现在指向首字节,要访问下个字节只需要*(p+1)就可以(即p[1]),同理下一个*(p+2)、*(p+3)(p[2]、p[3])。那如果我们不进行指针转换呢。我们看如下表示:
int * pi = &整型变量名;
这个时候用*pi将获得四个字节的内容。pi+1将指向下一个整型地址空间,即0x0005地址,所以*(pi+1)(即pi[1])将访问0x0005地址开始的四个字节的内容。这里有点需要强调的是,*(pi+i)总是等于pi[i]。整个过程如下图所示:
![](http://hi.csdn.net/attachment/201105/25/0_1306327865tHV5.gif)
图一:指针加1的差别
通过上面的分析,想获得一个整型数里面的某个字节的值的话,我们可以如下表示:
char a = ((char*)&整型变量名)[i];
i=0表示首字节,1表示第2个字节,依次类推。
刚刚在讨论字节序的问题的时候出现了这么一个问题,怎么访问一个整型变量里面的各个字节,我们知道,如果要访问这个整型最低地址一个字节的数据的话,可以通过如下方式:
char a = *(char*)&整型变量名;
这里先将整型数通过取地址符号获得变量的开始的地址,为什么要(char*)进行强制类型转换呢,因为对于整型数据的话,表示的就是以首地址开始的4个字节,它是一个整体,取它的地址后,地址对应的类型为int*类型,即如果通过这个指针访问的话,只能访问到整个4个字节的空间的数据,没法访问单个字节。通过(char*)就将int*整型指针类型转换为字符型指针类型。这样就可以访问低地址这个字节的数据啦。那么如果我想访问第2个,第3个,第4个字节的数据呢。我们先来看看以下表示:
char * pc = (char*)&整型变量名;
pc现在指向首字节,要访问下个字节只需要*(p+1)就可以(即p[1]),同理下一个*(p+2)、*(p+3)(p[2]、p[3])。那如果我们不进行指针转换呢。我们看如下表示:
int * pi = &整型变量名;
这个时候用*pi将获得四个字节的内容。pi+1将指向下一个整型地址空间,即0x0005地址,所以*(pi+1)(即pi[1])将访问0x0005地址开始的四个字节的内容。这里有点需要强调的是,*(pi+i)总是等于pi[i]。整个过程如下图所示:
![](http://hi.csdn.net/attachment/201105/25/0_1306327865tHV5.gif)
图一:指针加1的差别
通过上面的分析,想获得一个整型数里面的某个字节的值的话,我们可以如下表示:
char a = ((char*)&整型变量名)[i];
i=0表示首字节,1表示第2个字节,依次类推。
相关文章推荐
- 怎么访问一个整型数里面的各个字节
- 怎么访问一个整型数里面的各个字节
- Fragment 访问本地服务器,有三个fragment 这是其中一个的页面 三个fragmen都一样 因为我有一些朋友问这里面怎么写,索性就发表出来你们看下,大神勿喷。小学生作品!
- 在桌面上一个文件里面为DOS界面的java根目录,怎么才能访问桌面上面的文件???
- 如何才能做一个好网站系列 第六篇 别人是怎么访问你的网站
- 【技术贴】在Excel一个小表格里面,如果回车的话就会跳到下一个格,我要换行怎么办啊?
- td里面有一个text和img,怎么对齐啊?
- 怎么在一个表单里面同时上传文件和文本信息??
- oracle里面怎么查一个表中的日期字段的连续日期的缺少的日期
- MYSQL里面统计一个表的列数(即字段数目)怎么查
- 在一个td里面怎么让两个div重叠
- 怎么访问局域网里面的计算机
- 学习类,笔记!关于一个函数里面定义多个类以及相互访问的问题
- 怎么设置文本属性为只读和隐藏 C#里面采用FileSream写入一个txt文本
- 怎么通过sql语句访问另外一个库的内容
- javascript中,当父窗口打开一个新窗口,当前新窗口怎么去访问父窗口的变量或方法呢?
- 请问怎么在一个ImageButton控件里面调用JS的函数
- 怎么把多个表的数据读到一个DATAGRID里面?
- [VB.NET]vb.net里面怎么生成一个CSV文件,并把检索出来的数据集导入CSV
- 急急急!!!!怎么下载一个指定DIV里面的图片到本地呀!!!!!!!!!!!!!!