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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于endian

發(fā)布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于endian 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)于endian這個詞Pconline上的解釋如下:

“endian”這個詞出自《格列佛游記》。小人國的內(nèi)戰(zhàn)就源于吃雞蛋時是究竟從大頭(Big-Endian)敲開還是從小頭(Little-Endian)敲開,由此曾發(fā)生過六次叛亂,其中一個皇帝送了命,另一個丟了王位。

我們一般將endian翻譯成“字節(jié)序”,將big endian和little endian稱作“大尾”和“小尾”。
還挺有趣的,不是嗎?這些黑客們又同時是奇客(geek),總喜歡在學(xué)問中搞出些小小的“玩笑”來調(diào)劑自己的生活,并樂在其中,它和做學(xué)問的時侯的嚴(yán)謹(jǐn)完美的結(jié)合在黑客身上,還顯得如此的協(xié)調(diào)!
初次遇到關(guān)于endian的問題是在學(xué)習(xí)網(wǎng)絡(luò)編程的時侯,因?yàn)槎丝谔栆M(jìn)行字節(jié)序列的轉(zhuǎn)換,所以那本書簡單地解釋了endian,并對big endian和little endian做如下解釋:
  • Big endian: 當(dāng)存儲一個超過一個字節(jié)的數(shù)據(jù)類型時,將其中的高位放在低地址的地方,低位放在高地址的地方。
  • Little endian: 于Big endian恰恰相反。
那個時侯我確實(shí)也是明白了,自以為知之也。
不久前在Linux的內(nèi)核里面再次遇到關(guān)于endian的問題,茫然:
File: include/linux/ip.h
?82 struct iphdr {
?83 #if defined(__LITTLE_ENDIAN_BITFIELD)
?84???????? __u8??? ihl:4,
?85???????????????? version:4;
?86 #elif defined (__BIG_ENDIAN_BITFIELD)
?87???????? __u8??? version:4,
?88???????????????? ihl:4;
?89 #else
?90 #error? "Please fix <asm/byteorder.h>"
?91 #endif
?92???????? __u8??? tos;
?93???????? __be16? tot_len;
?94???????? __be16? id;
?95???????? __be16? frag_off;
?96???????? __u8??? ttl;
?97???????? __u8??? protocol;
?98???????? __u16?? check;
?99???????? __be32? saddr;
100???????? __be32? daddr;
101???????? /*The options start here. */
102 };
當(dāng)看到83-91行的代碼的時侯,再次陷入到了endian的泥沼之中,難道在小于自己單位的bit之中也存在endian的問題?
Google到了一些資料,看了之后只發(fā)覺自己更加的模糊,似乎有些文章的作者自己也不是很明白,看來這個工作之能靠自己測試了。經(jīng)過幾個程序的簡單測試之后,終于找到了一個簡單的endian分析方法,先描述如下(希望我的晦澀的言語您能讀懂):
當(dāng)需要用多個字節(jié)來描述一個數(shù)據(jù)類型,或者是一個數(shù)據(jù)結(jié)構(gòu)中包含多個字段時,各個字段和存儲區(qū)塊中的地址的映射關(guān)系如下:
  • big endian: 存儲的區(qū)塊按照地址從低到高的順序以字節(jié)為單位從左到右排列,劃分字段的時侯,從左到右依次劃分。
  • little endian: 存儲的區(qū)塊按照地址從高到低的順序以字節(jié)為單位從左到右排列,劃分的時侯,從右到左依次劃分。
很有可能大家不知我所云,現(xiàn)在簡單的給大家舉幾個簡單的例子:
u_int16_t x = 0x1;
u_int8_t xx[2];
memcpy(xx, x);
在上面的代碼中,最終xx[0]和xx[1]都是什么呢?
答案是不固定的,如果是在big endian的計算機(jī)上:
應(yīng)用第一條規(guī)則,從xx中從取出兩個字節(jié)x[0], x[1]。我們知道x[1]的地址肯定比x[0]高,所以排列如下:
x[0] x[1]
---------
15 ...? 0
---------
00??? 01
很明顯x[0] == 0, x[1] == 1.
如果是little endian的計算機(jī):
應(yīng)用第二條規(guī)則:
x[1] x[0]
---------
15 ...? 0
---------
?00?? 01
結(jié)果為x[0] == 1, x[1] == 0.
仔細(xì)看看結(jié)論是不是和在文章開始的判別方法給出的結(jié)論是相同的?所以在一定程度上,我們可以認(rèn)為前一個結(jié)論是后一個結(jié)論的推論。
讓我們看個更加復(fù)雜一點(diǎn)的例子:
union {
? u_int16_t num;
? struct {
??? u_int8_t a4 : 4;
??? u_int8_t b8;
??? u_int8_t c4 : 4;
? } b;
} a;
a.b.a4 = 0x01;
a.b.b8 = 0x0203;
a.b.c4 = 0x04;
a.num = ?

這個是不是復(fù)雜了很多,不要說實(shí)際中這樣的應(yīng)用不多,看看Linux內(nèi)核中數(shù)據(jù)結(jié)構(gòu)你就會明白,類似結(jié)構(gòu)還是蠻多的。
當(dāng)然又是和endian有關(guān)的問題,分類分析了:
big endian:
---------------------
| 7-4|3-0 | 7-4|3-0 |
---------------------
|? a[0]?? |?? a[1]? |
---------------------
| a4 |??? b8?? | c4 |
---------------------
| 01 | 02 | 03 | 04 |
---------------------
|???? 0x01020304??? |
---------------------
所以,a.num = 0x01020304
little endian:
---------------------
| 7-4|3-0 | 7-4|3-0 |
---------------------
|? a[1]?? |?? a[0]? |
---------------------
| c4 |??? b8?? | a4 |
---------------------
| 04 | 02 | 03 | 01 |
---------------------
|???? 0x04020301 ?? |
---------------------
所以,a.num = 0x04020301
就是這么簡單,如果你真的懂了的話!
iphdr的那個結(jié)構(gòu)就不用我來分析了吧?

轉(zhuǎn)載于:https://www.cnblogs.com/omygod/archive/2006/11/26/573048.html

總結(jié)

以上是生活随笔為你收集整理的关于endian的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本免费一区二区三区四区五六区 | 原来神马电影免费高清完整版动漫 | 在线视频午夜 | 欧美日韩乱 | 九九视频免费观看 | 天天想你免费观看完整版高清电影 | 免费中文字幕视频 | 福利片在线看 | 山村淫强伦寡妇 | 欲色综合| 国产麻豆精品视频 | 美女张开腿流出白浆 | 狼人av在线 | 草草福利视频 | 日韩亚洲欧美中文字幕 | 祥仔视觉av | 婷婷五月花 | 少妇特黄a一区二区三区 | 短视频在线观看 | 亚洲一二三区在线 | 久草视频福利在线 | 亚洲精品污一区二区三区 | 伊人影院网 | 亚洲成人av免费观看 | 日本强好片久久久久久aaa | 日韩精品一区二区三区不卡在线 | 欧美激情电影一区二区 | 绿帽人妻精品一区二区 | 青青青免费视频观看在线 | 日韩孕交 | www.久久.com | 久久精品一区二区三区黑人印度 | 精品视频免费在线观看 | 久操不卡 | 午夜神马影院 | 亚洲网在线观看 | 伊人婷婷色 | 久久午夜福利电影 | 亚洲av成人一区二区国产精品 | 日韩欧美一区二区免费 | 91久久综合精品国产丝袜蜜芽 | 精品欧美一区二区三区久久久 | 国产精品三级在线 | jzz在线观看| 在线亚洲区| 丝袜中文字幕 | 国产综合视频一区二区 | 97综合网| 久久久艹 | 国产精品无码天天爽视频 | 免费观看一级黄色片 | 浪浪视频污 | 91在线精品一区二区三区 | 日韩一本在线 | 日本黄a三级三级三级 | 亚洲欧美校园春色 | 日韩不卡一区二区三区 | 69堂精品| 亚洲自拍偷拍综合 | 每日av在线| 久久国产精品区 | 98超碰在线 | 亚洲永久精品ww.7491进入 | 在线爱情大片免费观看大全 | 色啪综合 | 玖玖在线视频 | 久久久午夜电影 | 免费无码av片在线观看 | 美女三级黄色片 | 伊人一级 | 日韩成人影视 | 亚洲三级影视 | 97人人爽人人爽人人爽 | 亚洲电影中文字幕 | 日日艹 | 在线观看成年人视频 | 欲涩漫入口免费网站 | 学生孕妇videosex性欧美 | 制服丝袜在线一区 | 日日操天天操夜夜操 | 国产亚洲精久久久久久无码苍井空 | 国产九一精品 | 琪琪色综合网 | 自拍偷拍中文字幕 | jzjzz成人免费视频 | 色姑娘综合网 | av中文一区 | 亚洲av无码久久精品色欲 | 午夜影院美女 | a级全黄 | 免费看av毛片| 伊人黄网 | 自拍偷拍第3页 | 久草福利免费 | 日韩色黄大片 | h片免费网站 | 久草国产在线 | 美女扒开尿口让男人爽 | h片在线观看网站 |