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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

字节序: big-endian vs little-endian

發布時間:2023/12/20 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字节序: big-endian vs little-endian 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何快速記憶

big-endian又名大尾序,就是數值的尾巴存儲在大地址上。尾是相對我們認識的變量值,大是指地址;
相對應,little-endian又名小尾序,數值的尾巴存儲在小地址上。
一句話大小是尾巴的地址,尾巴是數值的尾巴,指的是0xABCD(十進制43981)的D

如何判斷字節序是大端還是小端

  • 通過二進制工具查看: readelf -h main
  • int main(){return 0; }

    編譯出二進制

    g++ main.cpp -o main

    使用readelf查看字節序

    readelf -h main

    結果如下(ELF Magic第6個字節代表字節序,0 無效格式; 1 小端格式; 2 大端格式)
    ELF Header:
    Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
    Class: ELF64
    Data: 2’s complement, little endian
    Version: 1 (current)
    OS/ABI: UNIX - System V
    ABI Version: 0
    Type: DYN (Shared object file)
    Machine: Advanced Micro Devices X86-64
    Version: 0x1
    Entry point address: 0x1060
    Start of program headers: 64 (bytes into file)
    Start of section headers: 14976 (bytes into file)
    Flags: 0x0
    Size of this header: 64 (bytes)
    Size of program headers: 56 (bytes)
    Number of program headers: 14
    Size of section headers: 64 (bytes)
    Number of section headers: 32
    Section header string table index: 31

  • 使用命令行查看: lscpu | grep -i byte
  • yms@yms-System-Product-Name:~/ws/thread_local$ lscpu | grep -i byte
    Byte Order: Little Endian

  • 使用代碼(union)進行判斷
  • #include <stdio.h>union Endian {char a;int b;};int main(){Endian endian;endian.b = 1;if (endian.a == 1) {printf("little endian\n");}else{printf("big endian\n");} return 0;}

    yms@yms-System-Product-Name:~/ws$ ./main
    little endian

    網絡序

    網絡傳輸一般采用大端序,也被稱之為網絡字節序,或網絡序。IP協議中定義大端序為網絡字節序。

    總結

    以上是生活随笔為你收集整理的字节序: big-endian vs little-endian的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。