int i=1;char *p=(char *)&i;if(*p==1) printf("1"); else printf("2"); 大小端存储问题,如果小端方式中(i占至少两个字节的长度)则i所分配的内存最小地址那个字节中就存着1,其他字节是0.大端的话则1在i的最高地址字节处存放,char是一...
分类:
其他好文 时间:
2015-07-02 17:14:22
阅读次数:
143
今天有个任务是将字节文件转换成整型,我是采用C#的BinaryReader.ReadInt32来直接读取的,运行结果也很顺利,整型结果是1577,但是好奇心驱使我用Ultraedit打开了源文件,但是我发现16进制存储的数组是这样的
这是什么鬼…,读取结果:0x29060000=0*16^0+0*16^1+0*16^2+0*16^3+6*16^4+0*16^5+9*16^6+2*16^7=6882...
分类:
其他好文 时间:
2015-06-17 18:21:11
阅读次数:
822
大端:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中;
小端:数据的低位保存在内存的低地址中,而数据的搞完保存在内寸的高地址中;
大小端助记图:
测试本机是大端还是小端的代码:#include
int main()
{
union
{
short s;
char c[sizeof(short)];
}un;
un.s = 0x0102;
...
分类:
其他好文 时间:
2015-06-13 18:39:30
阅读次数:
102
概念大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如5A6C中5A是高字节、6C是低字节,在大端序机器中,高字节位于低地址中,即在大端序中按照5A6C存储,在小端序中按照6C5A存储。为什么存在这种模式因为在计算机系统中,我们是以字节为单位的,每个地址单元都对...
分类:
其他好文 时间:
2015-06-10 19:35:58
阅读次数:
139
一、为什么会出现大小端模式?
不同的cpu采用的大小端模式不一致。X86是小端模式。而KEIL
C51则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。
二、大小端模式的不同带来的问题是什么?如何解决?
如果存在数据网络传输,如果大小端模式不一致,如果不经过转换,必然会导致数据不致,出现错误。
解决方法:统一将网络上传输的...
分类:
其他好文 时间:
2015-06-03 11:53:27
阅读次数:
112
基本概念我们可以把计算机的内存抽像成一个大的数组,在这个数组中,包含了一个个的字节元素。对于大小端的讨论,我们可以认为内存的最小单元即是一个字节(byte)。对于每个字节,我们可以使用一个“索引”来标识,这个索引亦即我们平常所说的内存的地址。
假定计算机的字长为32位,即一个字包括4个字节。对于一个32位整数,例如,0x90AB12CD。由于每个十六进制的数字代表了4个位(bits),故我们需要8...
分类:
其他好文 时间:
2015-06-01 16:44:30
阅读次数:
151
1. 什么是大端,什么是小端:所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。2.为什么会有大小端: 为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单.....
分类:
其他好文 时间:
2015-05-23 22:36:27
阅读次数:
173