日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【一雪前耻!】两种方法判断大小端模式

發(fā)布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【一雪前耻!】两种方法判断大小端模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

廢話不多說,直接上代碼。

法一:指針法?

#include <stdio.h>int main(){int a = 1;char p = *((char *) &a); ///< int數(shù)據(jù)指針地址賦值給char類型數(shù)據(jù)后解引用if(((int)p) == 1) //把char類型數(shù)據(jù)強轉(zhuǎn)成int類型數(shù)據(jù){printf("little-endian\n");}else{printf("big-endian\n");}return 0; }

?法二:聯(lián)合體法?

#include <stdio.h>int main(){union Data {int i;char ch;} un;un.i = 1;if(((int)(un.ch)) == 1){printf("little-endian\n");}else{printf("big-endian\n");}return 0; }

簡單聊聊。

為啥叫一雪前恥呢。說來話長了哎。仍記得當初面試GE醫(yī)療,讓我手擼一個判斷大小端的代碼,當場懵逼時候的情景。老實說,一直都記不清大端小端,作為API調(diào)用者,大小端的理論也沒深入理解過,所以想想寫不出來也是早就注定的結(jié)局。現(xiàn)如今,痛定思痛,痛改前非。待從頭,收拾舊山河,朝天闕。

說下我理解與記憶的方法吧:

數(shù)據(jù)的低位在內(nèi)存的低地址就為小端模式,否則就是大端模式。

詳細說說?。

大端模式,是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址中,這樣的存儲模式有點兒類似于把數(shù)據(jù)當作字符串順序處理:地址由小向大增加,而數(shù)據(jù)從高位往低位放;這和我們的閱讀習慣一致。

小端模式,是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中,這種存儲模式將地址的高低和數(shù)據(jù)位權(quán)有效地結(jié)合起來,高地址部分權(quán)值高,低地址部分權(quán)值低。

下面以unsigned int value = 0x12345678為例,分別看看在兩種字節(jié)序下其存儲情況,我們可以用unsigned char buf[4]來表示value

buffer

內(nèi)存地址

小端模式(little-endian)存放內(nèi)容

大端模式(big-endian)存放內(nèi)容

buffer[0]

0x4000

0x78

0x12

buffer[1]

0x4001

0x56

0x34

buffer[2]

0x4002

0x34

0x56

buffer[3]

0x4003

0x12

0x78

參考文檔:https://baike.baidu.com/item/%E5%A4%A7%E5%B0%8F%E7%AB%AF%E6%A8%A1%E5%BC%8F/6750542?fr=aladdin

總結(jié)

以上是生活随笔為你收集整理的【一雪前耻!】两种方法判断大小端模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。