逆向學習 位元組序問題之大端與小端

2021-08-14 19:57:06 字數 940 閱讀 8613

本文參考

1.2.

大端、小端: 

大小端是指cpu儲存資料的方式,比如乙個0x01020304這個整數,在win、linux下在記憶體中的布局如下 

[04][03][02][01] 

低位址-->高位址 

在unix下則是 

[01][02][03][04] 

低位址-->高位址 

通俗的說,和win下的記憶體布局一致的就是小端,和unix下一致的就是大端。 

其實在以前還出現過中端的的機型,不過這些機型也太「孤僻」了,已經落伍沒人生產沒人用了。 

那麼,如何判斷乙個機器是大端還是小端呢

#include typedef unsigned char *byte_pointer;

void show_byte(byte_pointer start,int len)

else if(data==0x22000000)

else

}void checkdxd2();

union var l;

l.data=0x01020304;

if(l.str==0x01)

else if(l.str==0x04)

else

}void checkdxd3() endian = };

#define endian ((char)endian.ul)

printf("%c\n", endian);//l是小端,b是大端

}void checkdxd4() //強制型別轉換

else

}int main()

linux下編譯

gcc -o test test.c
執行

./test

小端位元組序與大端位元組序

端模式分為 小端位元組序和大端位元組序,也就是位元組在記憶體中的順序。小端位元組序 低位元組存於記憶體低位址 高位元組存於記憶體高位址。如乙個long型資料0x12345678 0x0029f458 0x78 0x0029f459 0x56 0x0029f45a 0x34 0x0029f45b 0x...

小端位元組序與大端位元組序

端模式分為 小端位元組序和大端位元組序,也就是位元組在記憶體中的順序。0x0029f458 0x78 0x0029f459 0x56 0x0029f45a 0x34 0x0029f45b 0x12 在以上資料存放於記憶體中的表現形式中,0x0029f458 0x0029f459 0x0029f45a...

大端 小端與網路位元組序

大端 big endian 小端 little endian 以及網路位元組序的概念在程式設計中經常會遇到,其中網路位元組序 network byte order 一般是指大端 big endian,對大部分網路傳輸協議而言 傳輸,大端小端的概念是面向多位元組資料型別的儲存方式定義的,小端就是低位在...