讀csapp有感:大端法,小端法

先介紹什麼是大端法,小端法。 服務器

就是根據字節順序在內存中的排列順序的差別的兩種標準,小端法指的是機器選擇在存儲器重按照從低有效字節到高有效字節的順序存儲對象。大端法按照從高有效字節到低有效字節的順序存儲對象。好比存儲0x01234567,咱們看看大端法和小端法存儲的特色 code

(圖有一個錯誤 應該是0x01234567) 對象

小端法的表明是Intel系列的處理器,大端法的表明是IBM,sun的處理器,標準不統一的後果就是當小端法機器產生的數據發送到大端法的服務器時,或者相反的方向,程序接收的字節變成了反方向的。 內存

接下來咱們來判斷機器是大端仍是小端的。 io

#include <stdio.h>
typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start, int len) {
	int i;
	for (i = 0; i < len; i++) {
		printf("%.2x ", start[i]);
	} 
	printf("\n");
}
void show_int(int x) {
	show_bytes((byte_pointer)&x, sizeof(int));
}
int main()
{
	int a = 1023;
	show_int(a);
	return 0;
}
我寫了一段代碼,show_bytes(byte_pointer, int)將字節從低到高每兩位一組輸出,show_int(int)取整數的地址,強制該地址指向byte_pointer,調用show_bytes()輸出。

輸出結果爲ff 03 00 00,可知我機器的爲小端機器,若是機器是大端系統,那輸出的結果就是 00 00 03 ff。 class

相關文章
相關標籤/搜索