麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

網絡字節序的問題

2019-11-17 05:15:49
字體:
來源:轉載
供稿:網友

  最近接觸到網絡字節序的概念 查了查資料 不是很明白 先引用一段材料:

字節順序是指占內存多于一個字節類型的數據在內存中的存放順序,通常有小端、大端兩種字節順序。小端字節序指低字節數據存放在內存低地址處,高字節數據存放在內存高地址處;大端字節序是高字節數據存放在低地址處,低字節數據存放在高地址處。基于X86平臺的PC機是小端字節序的,而有的嵌入式平臺則是大端字節序的。因而對int、uint16、uint32等多于1字節類型的數據,在這些嵌入式平臺上應該變換其存儲順序。通常我們認為,在空中傳輸的字節的順序即網絡字節序為標準順序,考慮到與協議的一致以及與同類其它平臺產品的互通,在程序中發數據包時,將主機字節序轉換為網絡字節序,收數據包處將網絡字節序轉換為主機字節序。

在本linux的書里介紹到INTEL的CPU使用的小端字節序 其他比MOTOROLA
68000系列CPU使用的是大端字節序 假如不轉換 將數據通過網絡發出時 比如MOTOROLA發一個16位數據:0X1234 傳送到INTEL時
就被INTEL解釋為0X3412 也就是4660成了13330 所以有時候需要一些函數來進行大小端字節序的轉換

關于這大小字節序的概念不是很想的明白 數據在
內存里是具體怎么存放的形式?為什么會有CPU解釋的不同?數據不是按12345678……這樣的順序一直排列的么?希望大人賜教 謝謝

不就是大小印地安記法嗎
1)從低到高存 (liittle edian)
例:0x1234
內存中是0x34 0x12
2)從高到低存 (big edian)
例:0x1234
內存中是0x12 0x34

如: 一個多字節值 0xFECDBA98,內存從地址100開始存放

降序: FE CD BA 98---->對應地址100 101 102 103

升序: 98 BA CD FE ---->same above

注重,我們的書寫表示法是從低字節位--->高字節位


至于為什么CPU解釋不同,可能是由于不同的體系構架在起始競爭時人為地制造

和對手不兼容性......害的我們這么慘,一碰到移植就要注重這個

C代碼的移植相對簡單原因之一就是由于C的連續存儲數據永遠保持從低地址到高

地址的索引........

小端字節序就是升序排列那種?
我們的書寫表示法是從低字節位--->高字節位 這個是什么意思呢?難道FECDBA98是從低到高(從左到右)嗎?

還有它排列是按單個字節來 還是按數據類型的?比如說是INT型就按兩個兩個排 就象0X1234 和0X3412 而不是0X1234 和0X4321?

我們的書寫表示法是從低字節位--->高字節位 這個是什么意思呢?難道FECDBA98是從低到高(從左到右)嗎?"




"還有它排列是按單個字節來 還是按數據類型的"

對于多字節數據才有這么一出

這樣理解吧
譬如:
內存地址生長方向為: 從左到右 由低到高(這是不變的)

數據為: 0x89ABCDEF

降序(Big-endian)大端字節序 存儲時 由左到右

升序(Little-endian)小端字節序 存儲時 由右向左

可以自己編一個小程序驗證一下(用C的數組)
更簡單的調用VC里的checkEndian()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人午夜免费网站 | 免费国产在线观看 | 国产99久久精品一区二区 | 日本中文字幕电影在线观看 | 国产青草视频在线观看视频 | 国产成人精品一区二区仙踪林 | h色视频网站 | 国产精品久久久久网站 | 日本高清无遮挡 | 一级做受毛片免费大片 | 色视频在线观看 | 久久国产精品久久久久久久久久 | 日韩视频在线观看免费视频 | 色视频在线 | 国产一区二区三区四区波多野结衣 | 久久久久国产一区二区三区不卡 | 国产精品伊人久久 | 黄色特级片黄色特级片 | 成人免费在线观看视频 | av成人免费 | 偷偷草网站 | jj视频在线播放 | 国产三级三级三级三级 | 韩国十九禁高潮床戏在线观看 | 亚洲一级片免费观看 | 国产视频第一区 | 九色91视频 | 欧美成年性h版影视中文字幕 | 国产 日韩 一区 | 一本在线高清码电影 | 久久久大片 | 亚洲第一激情 | 亚洲一区免费观看 | 依人在线视频 | 国产精品亚洲欧美一级在线 | 精品国产乱码久久久久久丨区2区 | 精国产品一区二区三区四季综 | 成人一级视频 | 久久久婷婷一区二区三区不卡 | 9797色| 黑人一区二区三区四区五区 |