博客專欄

        EEPW首頁 > 博客 > 【C練習(xí)】大小端轉(zhuǎn)換函數(shù)

        【C練習(xí)】大小端轉(zhuǎn)換函數(shù)

        發(fā)布人:電子禪石 時(shí)間:2023-02-22 來源:工程師 發(fā)布文章

        實(shí)現(xiàn)一個(gè)大小端轉(zhuǎn)換函數(shù)。


        32bit數(shù)據(jù)大小端轉(zhuǎn)化

        大小端轉(zhuǎn)化的函數(shù)有很多,系統(tǒng)也提供了一些運(yùn)行庫,如網(wǎng)絡(luò)庫中提供的:htons、htonl等函數(shù),但需要引用對(duì)應(yīng)的頭文件,打包也需要包含對(duì)應(yīng)的庫文件。如果只是簡單的用到大小端轉(zhuǎn)化,那么可以采用如下宏函數(shù)來實(shí)現(xiàn)。


        可用于網(wǎng)絡(luò)的IP、Port大小端轉(zhuǎn)化,也可用于flash存儲(chǔ)、文件存儲(chǔ)時(shí)所需的大小端轉(zhuǎn)化。


        // 4bytes、32bit數(shù)據(jù)大小端轉(zhuǎn)化
        #define L2B32(Little) (((Little & 0xff) << 24) | (((Little >> 8) & 0xff) << 16) | (((Little >> 16) & 0xff) << 8) | ((Little >> 24) & 0xff))

        ————————————————

        優(yōu)化一下

        // 4bytes、32bit數(shù)據(jù)大小端轉(zhuǎn)化
        #define L2B32(Little) (((Little & 0xff) << 24) | (((Little) & 0xff00) << 8) | (((Little) & 0xff0000) >> 8) | ((Little >> 24) & 0xff))

        16bit數(shù)據(jù)大小端轉(zhuǎn)化
        // 2bytes、16bit數(shù)據(jù)大小端轉(zhuǎn)化
        #define L2B16(Little) (((Little & 0xff) << 8) | ((Little >> 8) & 0xff))

        原文鏈接:https://blog.csdn.net/u010333084/article/details/120738241


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: c

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 鲁甸县| 天柱县| 离岛区| 巩留县| 英吉沙县| 图木舒克市| 鞍山市| 安西县| 安溪县| 惠安县| 尼勒克县| 和林格尔县| 富源县| 宜兰市| 顺义区| 武强县| 靖安县| 日照市| 连州市| 邵阳县| 都匀市| 长岛县| 于都县| 古交市| 民丰县| 监利县| 宜宾市| 磐石市| 南阳市| 曲阳县| 衡南县| 深州市| 海南省| 大宁县| 开封市| 玛沁县| 济南市| 宜章县| 临泽县| 通城县| 从江县|