<menu id="u2y6m"></menu>
<tt id="u2y6m"><rt id="u2y6m"></rt></tt>
  • <input id="u2y6m"></input><tt id="u2y6m"><blockquote id="u2y6m"></blockquote></tt>
    <bdo id="u2y6m"><small id="u2y6m"></small></bdo>
  • <blockquote id="u2y6m"><optgroup id="u2y6m"></optgroup></blockquote>
  • 溫馨提示×

    c++中如何獲取整數各個字節

    發布時間:2021-12-22 17:37:08 來源:億速云 閱讀:105 作者:小新 欄目:互聯網科技

    這篇文章將為大家詳細講解有關c++中如何獲取整數各個字節,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    題目:獲取0x12345678各個字節。

    方法一:結構&聯合

    #include <stdio.h>

    typedef unsigned int  uint32_t;
    typedef unsigned char uint8_t;

    union bit32_data
    {
        uint32_t data;
        struct 
        {
            uint8_t byte0;
            uint8_t byte1;
            uint8_t byte2;
            uint8_t byte3;
        }byte;
    };

    int main(void)
    {
        union bit32_data num;
        
        num.data = 0x12345678;

        printf("byte0 = 0x%x\n", num.byte.byte0);
        printf("byte1 = 0x%x\n", num.byte.byte1);
        printf("byte2 = 0x%x\n", num.byte.byte2);
        printf("byte3 = 0x%x\n", num.byte.byte3);

        return 0;
    }
     

    運行結果:

    c++中如何獲取整數各個字節

    這種方法的缺點是:會受到大小端的影響。只有在明確大小端的情況下可稍微用一用。以上是小端模式下的運行結果。

    結構&聯合法不僅僅是在獲取數據各個字節有用,在數據協議、數據位拆分等方面很實用,之后再做更詳細的分享。

     

    方法二:移位操作

    #include <stdio.h>

    #define GET_LOW_BYTE0(x) ((x >>  0) & 0x000000ff) /* 獲取第0個字節 */
    #define GET_LOW_BYTE1(x) ((x >>  8) & 0x000000ff) /* 獲取第1個字節 */
    #define GET_LOW_BYTE2(x) ((x >> 16) & 0x000000ff) /* 獲取第2個字節 */
    #define GET_LOW_BYTE3(x) ((x >> 24) & 0x000000ff) /* 獲取第3個字節 */

    int main(void)
    {
     unsigned int a = 0x12345678;
     
     printf("byte0 = 0x%x\n", GET_LOW_BYTE0(a));
     printf("byte1 = 0x%x\n", GET_LOW_BYTE1(a));
     printf("byte2 = 0x%x\n", GET_LOW_BYTE2(a));
     printf("byte3 = 0x%x\n", GET_LOW_BYTE3(a));
     return 0;
    }
     

    運行結果:

    c++中如何獲取整數各個字節

    這也是獲取數據各個字節的最常用也最有效的方法。這種類似的位操作在嵌入式方面應用得很多,比如在LCD操作中表示像素顏色值、FLASH的操作等方面都有用到。

    關于“c++中如何獲取整數各個字節”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    c++
    免費撥打  400 100 2938 免費撥打 400 100 2938
    24小時售后技術支持 24小時售后技術支持
    返回頂部 返回頂部
    <menu id="u2y6m"></menu>
    <tt id="u2y6m"><rt id="u2y6m"></rt></tt>
  • <input id="u2y6m"></input><tt id="u2y6m"><blockquote id="u2y6m"></blockquote></tt>
    <bdo id="u2y6m"><small id="u2y6m"></small></bdo>
  • <blockquote id="u2y6m"><optgroup id="u2y6m"></optgroup></blockquote>
  • 一本久道久久综合丁香五月_免费视频禁止18以下禁止观看_日本japanese熟睡人妻_成熟闷骚女邻居引诱2