怎么访问一个整型数里面的各个字节
来源:互联网 发布:js splice函数 编辑:程序博客网 时间:2024/05/16 10:51
刚刚在讨论字节序的问题的时候出现了这么一个问题,怎么访问一个整型变量里面的各个字节,我们知道,如果要访问这个整型最低地址一个字节的数据的话,可以通过如下方式:
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]。整个过程如下图所示:
图一:指针加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]。整个过程如下图所示:
图一:指针加1的差别
通过上面的分析,想获得一个整型数里面的某个字节的值的话,我们可以如下表示:
char a = ((char*)&整型变量名)[i];
i=0表示首字节,1表示第2个字节,依次类推。
0 0
- 怎么访问一个整型数里面的各个字节
- 怎么访问一个整型数里面的各个字节
- 怎么访问一个整型数里面的各个字节
- vc中整型字节数
- 整型之具体字节数
- 一个整型数的二进制序列
- 怎么访问局域网里面的计算机
- MYSQL里面统计一个表的列数(即字段数目)怎么查
- VB6中实现浮点数各个字节的提取
- 单片机中各个数据类型在内存中占的字节数
- c/c++ 各个类型所占的字节数
- C中 各个数据类型占用的字节数
- python 中4个字节怎么变成一个浮点数
- 1怎么理解,说int存的是“32位整型”数据? 2一个“字节”多少“位” 3“字节”是存储的单位,那么计算机是怎么存储的?即“位”吗?
- 一个数的各个位数交换
- 声明一个类MyString,定义它里面的各个函数
- 定义一个16位长整型数,统计里面0~9每个数字出现的次数。(包括将长整型转化为字符数组的方法及switch的用法)
- 整型占用字节的计算
- move_to_user_mode()函数分析
- XSS跨站测试代码大全
- 孤儿进程与僵尸进程
- 一阶逻辑等值演算
- 写给女友的JS教程—之JS闭包
- 怎么访问一个整型数里面的各个字节
- 解决genymotion Qt版本的问题
- 堆和栈的区别(转过无数次的文章)
- 图例操作
- 【Foundation学习笔记】常用类--NSDictionary和NSMutableDictionary
- C++ 排序函数 sort(),qsort()的用法
- JSTL标签库中<c:choose></c:choose>不能放JSP页面<!-- -->注释
- mips语法入门
- 写在前面