判斷一個機器使用的是大端儲存還是小端儲存
本文節選自《UNIX網路程式設計》。
考慮一個16位整數,它由兩個位元組組成。記憶體中儲存這兩個位元組有兩種方法:一種是將低序位元組儲存在起始地址,這稱為小端(little-endian)位元組序;另一種方法是將高序位元組儲存在起始地址,這稱為大端(big-endian)位元組序。
下面的程式可以判斷一臺機器是大端儲存還是小端儲存。
#include<stdio.h> int main(int argc, char** argv){ //聯合(union)中,所有成員引用的是記憶體中相同位置, //由具體成員型別決定了這些位如何被解釋 union{ short s; char c[sizeof(short)]; } un; un.s = 0x0102; //16進位制數中,02是低序位元組,01是高序位元組 if(sizeof(short)==2){ if(un.c[0]==1 && un.c[1]==2){ printf("big-endian\n"); }else if(un.c[0]==2 && un.c[1]==1){ printf("little-endian\n"); }else{ printf("unknow\n"); } }else{ printf("sizeof(short) = %d\n",sizeof(short)); } return 0; }
相關推薦
判斷一個機器使用的是大端儲存還是小端儲存
本文節選自《UNIX網路程式設計》。 考慮一個16位整數,它由兩個位元組組成。記憶體中儲存這兩個位元組有兩種方法:一種是將低序位元組儲存在起始地址,這稱為小端(little-endian)位元組序;另一種方法是將高序位元組儲存在起始地址,這稱為大端(big-endian)位
大端儲存和小端儲存,網路位元組序
一、大端、小端 "大端"和"小端"表示多位元組值的哪一端儲存在該值的起始地址處;小端儲存在起始地址處,即是小端位元組序;大端儲存在起始地址處,即是大端位元組序; 或者說: 1.小端法(Little-Endian)就是低位位元組排放在記憶體的低地址端(即該值的起始地址),高
大端儲存和小端儲存及基於c語言的測試函式
大端模式是什麼?小端模式又是什麼?對系統哪些方面有影響?又如何來檢視我的電腦到底是大端還是小端呢?這些問題在文中都將獲得解決,一起來看看吧。首先我們來介紹一下概念:大端模式(Big_endian):字資料的高位元組儲存在低地址中,而字資料的低位元組儲存在高地址中。如下圖。小端
【已解決】如何判斷處理器是大端,或小端?
去年11月份的面試題,今天有空整理出來了,算是總結。 ************************************************************ 大端、小端指對運算元的存放,大端從高到低放,小端從低到高放。X86的intel平臺為小端,微控制器
怎麼編寫簡單程式判斷電腦是大端cpu還是小端cpu
電腦的cpu有兩種,大端和小端cpu。 大端cpu: 所謂的大端,是指資料的高位元組,儲存在記憶體的低地址中,而資料的低位元組,儲存在記憶體的高地址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理:地址由小向大增加,而資料從高位往低位放; 小端: 所謂的小端,是指資料的
使用C語言判斷一個機器是大端機還是小端機
1.什麼是大端,什麼是小端? 大端:資料的高位位元組存放在高地址內,資料的低位位元組存放在低地址內。 小端:資料的高位位元組存放在低地址內,資料的高位位元組存放在高地址內。 一個整型是4個位元組,如:0x1a2b3c4d。電腦讀取記憶體資料時,是從低位地址到高位地址進行
如何判斷機器CPU是大端模式還是小端模式
說明:這裡面涉及到本機位元組序和網路位元組序的概念。A (本機位元組序) ---- 網路位元組序 ----B(本機位元組序),其中本機位元組序就是指機器是大端還是小端,網路位元組序,我們都知道網路中會將內容封裝成流,比如TCP/IP或者是 ISO,網路位元組序是大端模式。引用網上的一張關於大小端的圖
C語言判斷資料儲存時大端模式還是小端模式
用C語言寫程式時需要知道是大端模式還是小端模式。所謂的大端模式,是指資料的低位儲存在記憶體的高地址中,而資料的高位,儲存在記憶體的低地址中;所謂的小端模式,是指資料的低位儲存在記憶體的低地址中,而資料的高位儲存在記憶體的高地址中。為什麼會有大小端模式之分呢?這是因為在計算機系
判斷當前環境是大端法還是小端法的兩種方法
1:寫一個聯合體判斷 ///一個32位四位元組的整數值,例如:1,實際的計算機編碼表示是0x000000001 ///小端系統中在記憶體中的表示是 01 00 00 00 ///大端系統中在記憶體中的表示是 00 00 00 01 union EndianTest{ int8
大端模式和小端模式的判斷及其互相轉化
一.定義 大端模式(Big Endian):資料的高位元組,儲存在記憶體的低地址中;資料的低位元組,儲存在記憶體的高地址中。 小端模式(Little Endian):資料的高位元組,儲存在記憶體的高地址中;資料的低位元組,儲存在記憶體的低地址中。 二.
c語言 之大端小端儲存問題
我們都知道資料在計算機中的儲存是以補碼形式儲存的。在計算機中,如果資料的高位元組內容放在高地址處,低位元組內容放在低地址處,我們稱它為小端位元組序;相反,如果資料的高位元組內容放在底地址處,低位元組內
大端儲存格式與小端儲存格式
1.大端儲存格式即字資料的高位元組儲存在低地址中,而字資料的低位元組則存放在高地址中。與大端儲存格式相反,在小端儲存格式中,低地址中存放的是字資料的低位元組,高地址存放的是字資料的高位元組。 例如,3
大端格式和小端格式儲存的區別
short int x;char x0,x1;x=0x1122;x0=((char*)&x)[0]; //低地址單元x1=((char*)&x)[1]; //高地址單元若x0=0x11,則是大端; 若x0=0x22,則是小端。-----------有時候,用C語言寫程式時需要知道是大端模式還是
判斷大端模式還是小端模式
#include <stdio.h>int main (int argc, char **argv){ int a = 0x12345678; char b; b = (((unsigned char *)&(a))[0]); i
大端機和小端機的判斷方法
int checkCPU() { { union w { int a; char b; } c; c.a = 1; return (c.b == 1); } } 剖析: 嵌入式系統開發者應該對Little-endian和Big-endian模式非
大端模式和小端模式
說明 dia style 得出 nio 特性 所有 訪問 img 1. 為什麽會產生兩種模式: 在計算機中我們是以字節為單位的,每一個地址單元都對應著一個字節,一個字節就是8位,c語言中char類型之外,還 有四個字節的int,個字節的longlong類型,並
大端模式與小端模式
abcde 輸出 stdlib.h rto bcd lib 字符 小端 const Big-Endian和Little-Endian的定義如下: 1) Little-Endian就是低位字節排放在內存的低地址端,高位字節排放在內存的高地址端。 2) Big-Endi
大端模式、小端模式和C#反轉
iou name 通過 緩存 .net new mark 要求 boa A、C#大端模式和小端模式。 小端(little-endian)模式:低地址上存放低字節,高地址上存放高字節。 如0x11223344→ byte[] numBytes = new byte[]{ 0x
大端BigEndian、小端LittleEndian與字符集編碼
title 不同的 box clear switch 最小數 name 文件頭部 存儲 BigEndian(大端):低字節在高內存地址 LittleEndian(小端):低字節在低內存地址 也就是看低字節在高內存地址還是低內存地址,也就是看低字節在前還是高字節在
位元組序----大端序和小端序
大端序 (big endian ):最高有效位元組儲存在最低低至,隨地址升高,位元組的權重降低。 小端序(little endian): 最低有效位元組儲存在最低地址,隨地址升高,位元組的權重升高。 比如說一個int型數字a為0x1234,那麼0x12代表a的高位,0x34代表a