在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

大端和小端概念、區別、轉換以及辨別方法解析

C語言專家集中營 ? 來源:未知 ? 作者:伍文輝 ? 2018-02-03 14:27 ? 次閱讀

學習底層編程或逆向的童鞋,肯定對這兩個名詞并不陌生吧?!今天就給大家介紹一下這兩個概念.

科普

大端和小端,老外叫 Big-Endian 和 Little-Endian,其實指的都是同一個東東在計算機界,表示數據在存儲器中的存放順序。不同的 CPU操作系統對待數據的存儲方式各有不同,但一般常見的操作系統都是小端,而通訊協議則是大端。

但并不是說系統是小端形式存儲,文件就一定要采用小端的形式,不同的應用程序對于自身數據的存儲方式也各有千秋(自家數據愛咋放咋放,有些還打亂了加密呢),比如:

* Adobe PS -- 大端

* BMP -- 小端

* GIF -- 小端

* JPEG -- 大端

* MacPaint -- 大端

* RTF -- 小端

那么小端和大端有什么區別呢?舉個栗子大家就明了了:

比如 0x12345678 這個數:

* 大端法在內存中按字節依次存放為:12 34 56 78

* 小端法在內存中按字節依次存放為:78 56 34 12

解釋:

大端:較高的有效字節存放在較低的存儲器地址,較低的有效字節存放在較高的存儲器地址。

比如整型變量 0x12345678 占 4 個字節,那么根據內存地址從小到大它們的存放方式如下:

大端和小端概念、區別、轉換以及辨別方法解析

小端:較高的有效字節存放在較高的的存儲器地址,較低的有效字節存放在較低的存儲器地址。所以整型變量 0x12345678 根據內存地址從小到大它們的存放方式如下:

大端和小端概念、區別、轉換以及辨別方法解析

轉換:

我們發現一個字節是可以存放兩個十六進制的數字的(一個字節最大可以存放的數是 0xFF),那如果給你一個十進制數(比如 112233),如何快速地知道它在內存中是如何存放的呢?

l 大端法很容易,直接將它轉換成十六進制,然后依次存放即可:0x0001B669

l 小端法則比較麻煩,步驟依次如下:

* 轉換成十六進制數(0x0001B669)

* 將八位數字的低四位和高四位互換(0xB6690001)

* 在低四位和高四位中,分別進行兩兩互換(0x69B60100)

如何檢測你的機器是大端還是小端?

前邊已經說過,常見的個人電腦大多數都是使用小端,但是我們都是我改變世界的程序猿,不妨考慮小如何使用代碼來分辨?

其實不難,通過將int強轉為插入單字節,判斷其實儲存位置:

#include

int main()

{

int a = 0x2233;

char *b = (char *)&a;

if (*b == 0x22)

{

printf("大端!\n");

}

else

{

printf("小端!\n");

}

return 0;

}

彩蛋

大端和小端,事實上是來源于 Jonathan Swift 的《格列佛游記》一書。

以下是 Jonathan Swift 在 1726 年關于大小端之爭歷史的描述:

……我下面要告訴你的是,Lilliput 和 Blefuscu 這兩大強國在過去 36 個月里一直在苦戰。戰爭開始是由于以下的原因:我們大家都認為,吃雞蛋前,原始的方法是打破雞蛋較大的一端,可是當今皇帝的祖父小時候吃雞蛋,一次按古法打雞蛋時碰巧將一個手指弄破了,因此他的父親,當時的皇帝,就下了一道敕令,命令全體臣民吃雞蛋時打破雞蛋較小的一端,違令者重罰。老百姓們對這項命令極為反感。歷史告訴我們,由此曾發生過 6 次叛亂,其中一個皇帝送了命,另一個丟了王位。這些叛亂大多都是由 Blefuscu 的國王大臣們煽動起來的。叛亂平息后,流亡的人總是逃到那個帝國去尋救避難。據估計,先后幾次有 11000 人情愿受死也不肯去打破雞蛋較小的一端。關于這一爭端,曾出版過幾百本大部著作,不過大端派的書一直是受禁的,法律也規定該派的任何人不得做官……

在他那個時代,Swift 是在諷刺英國(Lilliput)和法國(Blefuscu)之間持續的沖突。Danny Cohen,一位網絡協議的早期開創者,第一次使用這兩個術語來指代字節順序,后來這個術語就被廣泛地接納了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3639

    瀏覽量

    94031

原文標題:教你快速理解大端和小端

文章出處:【微信號:C_Expert,微信公眾號:C語言專家集中營】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    cpu的大端模式小模式優劣對比

    關于大端名詞的由來,有一個有趣的故事,來自于Jonathan Swift的《格利佛游記》:Lilliput和Blefuscu這兩個強國在過去的36個月中一直在苦戰。戰爭的原因:大家都知道,吃雞蛋的時候,原始的方法是打破雞蛋較
    的頭像 發表于 11-08 11:10 ?1.2w次閱讀
    cpu的<b class='flag-5'>大端</b>模式小<b class='flag-5'>端</b>模式優劣對比

    請問STM32(MDK)默認大端還是小

    STM32(MDK)默認大端還是小
    發表于 04-30 06:02

    ZCAN PRO解析的DBC Singal 起始位與XNET解析的起始位不同;解析的信號不符合大端邏輯

    上圖中的DBC文件使用記事本打開,Data_Field信號,起始位為23,長度為48,大端方式存儲;(按照這個方式存儲,明顯已經溢出) 上圖為該信號在ZCANPRO軟件中打開,解析的起始位為23
    發表于 10-18 13:53

    DSP 小大端問題 有償咨詢

    如題所示,我們以前是做算法的,用的都是dsp默認的庫實現算法,沒有關注大端問題。現在算法移交后,甲方說他們是大端,我們是小的庫,沒法用,我們嘗試著在
    發表于 12-04 08:56

    大端序與小

    嵌入式之什么是大端序與小序朱有鵬1.大小模式11.1、什么是大小模式大端模式(big endian)和小
    發表于 12-13 17:06

    求解釋大端和小概念和及區別

    麻煩專家用概括的語言解釋一下這兩個概念以及他們的區別吧,找文檔沒有找到相關資料。
    發表于 12-27 11:14

    LabVIEW 小序和大端區別

    LabVIEW 小序和大端區別看到在一些范例程序中出現了小序和大端序,這里的的字節序表示什么意思?解答: endian表示的是多字節二
    發表于 04-22 19:56

    ARM芯片是小還是大端

    ARM芯片是小還是大端?哪位大佬知道,能否給說明一下。ARM大小格式是由編譯器決定?還是CPU決定?
    發表于 06-30 17:59

    keil怎么設置大端和小模式?

    keil怎么設置大端和小模式,用于stm32
    發表于 09-21 07:46

    運行平臺的大端問題及判斷

    大端和小字節序的問題在網絡中以及在不同的操作系統的兼容性中是一個比較大的問題。它關系到不同操作系統和網絡傳輸是否能夠保證數據的語義正確性。
    發表于 08-25 17:54 ?952次閱讀

    如何辨別U盤和內存卡?兩者概念上的區別是什么

    本文首先介紹了辨別U盤和內存卡方法概念上的區別,其次對u盤不同格式優缺點進行了分析,最后介紹了內存卡主要分類及手機內存卡的作用。
    發表于 05-14 10:00 ?4.7w次閱讀

    關于大端模式與小模式的介紹

    數據組織是指數據的傳送順序。目前常見的32為處理器的數據總線粒度為1字節,在傳送時,一個32位數據的最高字節可以放在數據總線的最低8位傳送,也可以放在數據總線的最高8位傳送,因此出現了大端和小兩種數據組織方法
    的頭像 發表于 07-22 10:16 ?6506次閱讀
    關于<b class='flag-5'>大端</b>模式與小<b class='flag-5'>端</b>模式的介紹

    嵌入式開發中CPU大端和小模式的詳細資料和程序分析講解

    在嵌入式開發中,大端(Big-endian)和小(Little-endian)是一個很重要的概念
    發表于 05-06 18:23 ?0次下載
    嵌入式開發中CPU<b class='flag-5'>大端</b>和小<b class='flag-5'>端</b>模式的詳細資料和程序分析講解

    測試MCU是大端模式還是小模式

    1、在編程開發過程中必須要知道你的MCU是大端模式還是小模式。2、通過以下代碼就能輕松知道是大端模式還是小模式。3、廢話不多說,直接上代碼。#include "stdio.h&qu
    發表于 11-25 19:21 ?16次下載
    測試MCU是<b class='flag-5'>大端</b>模式還是小<b class='flag-5'>端</b>模式

    C語言 大端判斷代碼

    圖1:小法(左)、大端法(右)將數據最低位存儲在內存中的低地址處,這種數據存儲方法叫做小法;將數據最高位存儲在內存中的低地
    發表于 01-13 14:09 ?1次下載
    C語言 <b class='flag-5'>大端</b>小<b class='flag-5'>端</b>判斷代碼
    主站蜘蛛池模板: 日韩中文字幕第一页 | baoyu污污网站入口免费 | 日本黄视频在线观看 | 美女扒开下面让男人捅 | 免费一级特黄特色大片在线观看 | 911精品国产91久久久久 | 在线观看免费av网 | 国产精品成人一区二区 | 欧美性生活网址 | 国产三级精品在线观看 | 激情六月婷婷开心丁香开心 | 色老头成人免费综合视频 | 亚洲骚片| 女人张腿让男子桶免费动态图 | 青草视频网站在线观看 | 三级成人网 | 免费网站直接看 | 欧美成人鲁丝片在线观看 | 国模私拍一区二区 | h小视频在线 | 日本怡红 | 免费毛片网站在线观看 | 日本视频www| 热九九精品 | 亚洲一区欧美二区 | 国产成人悠悠影院 | 欧洲精品不卡1卡2卡三卡四卡 | 免费看黄在线 | 国产伦精品一区二区三区在线观看 | 色多多福利网站 | 狠狠操狠狠摸 | 亚洲精品午夜久久aaa级久久久 | 亚洲已满18点击进入在线观看 | 黄色美女免费网站 | 欧美3p精品三区 | a级男女性高爱潮高清试 | 日日添天天做天天爱 | 日韩欧美视频在线一区二区 | 分分操免费视频在线观看 | www.av123| 李老汉的性生生活1全部 |