国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

理解字節(jié)序

henry14 / 2216人閱讀

摘要:什么是字節(jié)序字節(jié)序,顧名思義就是字節(jié)的順序。因此,單字節(jié)的數(shù)據(jù)如或的類型的數(shù)據(jù)沒有字節(jié)序這一說,因為獲取它只需要讀取一個字節(jié)。主機序機器的字節(jié)序,有大端模式也有小端模式,根據(jù)具體機器的處理決定的,小端模式較常見。

1、什么是字節(jié)序

字節(jié)序,顧名思義就是字節(jié)的順序。更具體的講,它是多字節(jié)數(shù)據(jù)存儲和傳輸時,字節(jié)的順序。

2、為什么有“字節(jié)序”這個東西?

因為物理內(nèi)存是以字節(jié)為單位進行數(shù)據(jù)存儲,也就是我們常說的計算機基本單位為字節(jié)。
因此,單字節(jié)的數(shù)據(jù)(如c或java的char類型的數(shù)據(jù))沒有字節(jié)序這一說,因為獲取它只需要讀取一個字節(jié)。而多字節(jié)數(shù)據(jù),由于有多個字節(jié),所以在存儲和傳輸可以使用不同的順序進行操作。

3、舉個例子

十六進制數(shù) 0x12345678 共占4個字節(jié),分別是0x12、0x34、0x56、0x78,因此在該數(shù)字中0x12屬于高位數(shù)據(jù),0x78屬于地位數(shù)據(jù)。

注:
可以把內(nèi)存看成是一個很大的數(shù)組,4G內(nèi)存則是一個長度為4294967296的數(shù)組。
該數(shù)組的索引其實就是內(nèi)存地址,左邊是比較小的地址,右邊則越來越大,直至最大值。

第一種順序:低地址存放高位數(shù)據(jù),叫大端模式

第二種順序:低地址存放低位數(shù)據(jù),叫小端模式

兩者,大端模式比較符合人類的閱讀習(xí)慣;小端模式更符合計算機的處理方式,因為計算機從低位開始處理。

4、大小端的應(yīng)用場景。

網(wǎng)絡(luò)序:也稱為網(wǎng)絡(luò)字節(jié)序,都是大端模式。因為TCP/IP協(xié)議對各層協(xié)議統(tǒng)一規(guī)定采用大端模式。

主機序:機器的字節(jié)序,有大端模式也有小端模式,根據(jù)具體機器的處理決定的,小端模式較常見。

那么,在進行網(wǎng)絡(luò)通訊時,在將本地數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上就需要注意這個順序。如果本地機器的字節(jié)序是小端模式,則需要先轉(zhuǎn)換成大端模式后再進行發(fā)送;如果本地已經(jīng)是大端模式,則可以直接發(fā)送。

ps.在私有協(xié)議上的數(shù)據(jù),只要收發(fā)兩端約定好,用什么順序都行。不過,還是建議用網(wǎng)絡(luò)序發(fā)送。

5、如何判斷主機序
int main() {
    int x = 0x1020304;
    char* p = (char*)&x;
    if(p[0]==1){
         printf("Big
");
    }
    else{
          printf("Little
");
    }
    return 0;
}
6、Java設(shè)置大小端
public class HelloEndian {

    public static void main(String[] args) {
        ByteBuffer b = ByteBuffer.wrap(new byte[4]);
        b.order(ByteOrder.BIG_ENDIAN);
        b.putInt(0x01020304);
        System.out.println("Big-Endian:    " + Arrays.toString(b.array()));

        b = ByteBuffer.wrap(new byte[4]);
        b.order(ByteOrder.LITTLE_ENDIAN);
        b.putInt(0x01020304);
        System.out.println("Little-Endian: " + Arrays.toString(b.array()));
    }

}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/71540.html

相關(guān)文章

  • PHP中pack、unpack的詳細(xì)用法

    摘要:中有兩個函數(shù)和,很多在實際項目中從來沒有使用過,甚至也不知道這兩個方法是用來干嘛的。比如和分別對應(yīng)的二進制表示為。主機字節(jié)序表示當(dāng)年機器的字節(jié)序也就是網(wǎng)絡(luò)字節(jié)序是確定的,而主機字節(jié)序是依機器確定的,一般為小端字節(jié)序。 PHP中有兩個函數(shù)pack和unpack,很多PHPer在實際項目中從來沒有使用過,甚至也不知道這兩個方法是用來干嘛的。這篇文章來為大家介紹一下它倆到底是用來干啥的。 p...

    beita 評論0 收藏0
  • Node閑談之Buffer

    摘要:閑談系列不涉及具體的講解,只會勾勾畫畫一些自己認(rèn)為比較重要的特性。我們一般認(rèn)為用兩個字節(jié)位表示,并且完全囊括了字符集。將其轉(zhuǎn)換成進制就是只是表示它們是碼。三的讀取和寫入相關(guān)重要的只有能夠讀寫,才能夠顯示其存在的價值。 原文地址:http://www.cnblogs.com/DeanCh... 在剛接觸Nodejs的時候,有些概念總讓學(xué)前端的我感到困惑(雖然大學(xué)的時候也是在搞后端,世界上...

    Godtoy 評論0 收藏0
  • WebSocket系列之JavaScript中數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進制數(shù)據(jù)

    摘要:以和為例,說明中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進制數(shù)據(jù)。對象用來表示通用的固定長度的原始二進制數(shù)據(jù)緩沖區(qū)。中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進制數(shù)據(jù)對和有了一個大概的了解,下面讓我們來看下它是如何進行二進制數(shù)據(jù)操作的。 概述 本文主要通過對JavaScript中數(shù)字?jǐn)?shù)據(jù)與二進制數(shù)據(jù)之間的轉(zhuǎn)換,讓讀者能夠了解在JavaScript中如何對數(shù)字類型(包括但不限于Number類型)進行處理。 二進制數(shù)據(jù)在日常...

    MASAILA 評論0 收藏0
  • 【數(shù)據(jù)類型存儲原理】數(shù)據(jù)的存儲 - 深度剖析數(shù)據(jù)在內(nèi)存中的存儲

    摘要:數(shù)據(jù)的存儲前言數(shù)據(jù)類型匯總整型家族浮點型家族自定義類型指針類型。整型家族注在之后的標(biāo)準(zhǔn)規(guī)定,將類型數(shù)據(jù)劃分為整型家族,因為字符在內(nèi)存中會將其轉(zhuǎn)化為碼值進行存儲。 ...

    yuanzhanghu 評論0 收藏0
  • PHP中的pack和unpack函數(shù)

    摘要:鑒于文件讀寫網(wǎng)絡(luò)編程,或者說字節(jié)流處理的重要性,掌握這兩個函數(shù)是邁向高級編程的基礎(chǔ)。相比之下字節(jié)處理門庭冷落,相關(guān)函數(shù)寥寥無幾。上述是函數(shù)簡單的使用場景,接下來分別介紹和函數(shù)。如其名,函數(shù)的工作是將數(shù)據(jù)按照格式打包成字節(jié)數(shù)組。 轉(zhuǎn)載請注明文章出處:https://tlanyan.me/php-pack-a... PHP有兩個重要的冷門函數(shù):pack和unpack。在網(wǎng)絡(luò)編程,讀寫圖像...

    Lin_R 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<