字节序笔记

1.字节序概念

     由于计算机中存储数据按字节存储,字节序指数据在内存中存储的顺序,可以分为Big Endian和Little。

     BigEndian:低位地址存储高位字节。例如存储0x12345678     则在内存中的从低到高地址存储顺序为 0x12  0x34 0x56 0x78。

     LittleEndian:地位地址存储地位字节。例如存储0x12345678   则在内存中的从低到高地址存储顺序为 0x78  0x56 0x34 0x12。

     通常 x86 等指令集用的是小字节序,RISC 等其他指令集用大字节序。在同一指令集中进行数据传输不需要进行字节序转换,在不同的指令集之间进行传输时需要进行字节序转换,如进行网络传输。网络传输用的都是大字节序。

2.计算机大小端测试

 1 #include <iostream>

 2 

 3 using namespace std;

 4 

 5 int main()

 6 {

 7     unsigned int a=0x12345678;

 8     unsigned char * p=(unsigned char*)&a;

 9     if(*p==0x78){

10         cout<<"Little Endian"<<endl;

11     }else if(*p==0x12){

12         cout<<"Big Endian"<<endl;

13     }else{

14         cout<<"Unknow"<<endl;

15     }

16     return 0;

17 }

 

你可能感兴趣的:(笔记)