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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【C語(yǔ)言進(jìn)階】常見(jiàn)數(shù)據(jù)格式轉(zhuǎn)換處理的代碼實(shí)現(xiàn)

嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 來(lái)源:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 作者:嵌入式物聯(lián)網(wǎng)開(kāi)發(fā) ? 2022-08-17 08:48 ? 次閱讀

?一、代碼示例

博主在日常工作中開(kāi)展項(xiàng)目開(kāi)發(fā),經(jīng)常遇到要將數(shù)據(jù)格式做轉(zhuǎn)換處理,比如一段字符串轉(zhuǎn)換為16進(jìn)制的byte數(shù)組、或者一段16進(jìn)制的byte數(shù)組轉(zhuǎn)換成字符串輸出等等。

現(xiàn)將這部分常見(jiàn)功能的實(shí)現(xiàn)分享給大家,希望對(duì)大家的學(xué)習(xí)和工作有所幫助。

//將一個(gè)雙字節(jié)(16位的數(shù)值)拆分為一個(gè)數(shù)組按字節(jié)存儲(chǔ) 如 0x1234 ==> 0x12 0x34
void uint16_2_str(uint16_t Num, uint8_t *buff2)  
{
    buff2[1] = (uint8_t)Num;
    Num >>= 8;
    buff2[0] = (uint8_t)Num;
}

//將可讀的16進(jìn)制串合并成其一半長(zhǎng)度的二進(jìn)制串, 如 "12AB"-->0x12AB
void asc_2_bcd(char *psIAsc, int32_t iAscLen, char *psOBcd)
{
    char   Chtmp,ChBcd;
    int32_t    iCnt;

    for(iCnt = 0; iCnt < iAscLen; iCnt += 2)
    {
        Chtmp = psIAsc[iCnt];
        if( Chtmp >= 'A' )
        {
            Chtmp = (char)toupper((int)Chtmp) - 'A' + 0x0A;
        }
        else
        {
            Chtmp &= 0x0F;
        }
        ChBcd = (Chtmp << 4); // 獲取BCD的高位

        Chtmp = psIAsc[iCnt+1];
        if( Chtmp >= 'A' )  //zyl
        {
            Chtmp = (char)toupper((int)Chtmp) - 'A' + 0x0A;
        }
        else
        {
            Chtmp &= 0x0F;
        }
        ChBcd |= Chtmp; // 獲取BCD低位

        psOBcd[iCnt/2] = ChBcd;
    }
}

//將二進(jìn)制源串分解成雙倍長(zhǎng)度可讀的16進(jìn)制串, 如 0x12AB-->"12AB"
void bcd_2_asc(uint8_t *psIHex, int32_t iHexLen, char *psOAsc)
{
    static const char szMapTable[17] = {"0123456789ABCDEF"};
    int32_t   iCnt,index;
    unsigned char  ChTemp;

    for(iCnt = 0; iCnt < iHexLen; iCnt++)
    {
        ChTemp = (unsigned char)psIHex[iCnt];
        index = (ChTemp / 16) & 0x0F;
        psOAsc[2*iCnt]   = szMapTable[index];
        ChTemp = (unsigned char) psIHex[iCnt];
        index = ChTemp & 0x0F;
        psOAsc[2*iCnt + 1] = szMapTable[index];
    }
}

// 同bcd_2_asc()函數(shù),并在目標(biāo)串后添一 '\0'
void bcd_2_asc0(uint8_t *psIHex, int32_t iHexLen, char *pszOAsc)
{
    bcd_2_asc((uint8_t *)psIHex, iHexLen, pszOAsc);
    pszOAsc[2*iHexLen] = 0;
}

// 對(duì)一段字符串pszString填充前導(dǎo)字符ChAddChar,以便達(dá)到uiTargetLen長(zhǎng)度
static void add_head_chars( char *pszString, int32_t iTargetLen, char ChAddChar )
{
    int32_t iLen;

    iLen = strlen((char *)pszString);
    if( iLen>=iTargetLen )
    {
        return;
    }

    memmove(pszString+iTargetLen-iLen, pszString, iLen+1);
    memset(pszString, ChAddChar, iTargetLen-iLen);
}

// 刪除一個(gè)字符串pszString中的前導(dǎo)字符ChRemoveChar
static void trim_head_chars(char *pszString, char ChRemoveChar)
{
    char    *p;

    if( !pszString || !*pszString )
    {
        return;
    }

    for(p=pszString; *p && *p==ChRemoveChar; p++);
    if( p!=pszString )
    {
        while( (*pszString++ = *p++) );
    }
}

//以一個(gè)字符串str,以delim為分割符號(hào),分割成多個(gè)字符串,返回分割后的首地址
char *my_strtok(char *src, const char *delim, char *dst)
{
    if (src && *src)
    {
        char *p = strstr(src, delim); 
        if (p)
        {
            if (dst)
            {
                memcpy(dst, src, (p-src));
            }
            return ++p;
        }
        else
        {
            if (dst)
            {
                strcpy(dst, src);
            }
            return NULL;
        }
    }
    else
    {
        return NULL;
    }
}

這幾個(gè)轉(zhuǎn)換函數(shù)都是很實(shí)用的基礎(chǔ)函數(shù),比如把一串字符串轉(zhuǎn)換為16進(jìn)制的數(shù)組,或者把一個(gè)16進(jìn)制的數(shù)組轉(zhuǎn)換為一個(gè)可顯示的字符串,在應(yīng)用程序中是一種很常見(jiàn)的數(shù)據(jù)轉(zhuǎn)換。

大家如對(duì)實(shí)現(xiàn)代碼有疑問(wèn),歡迎在評(píng)論席給我留言。 @_@ ...

?二、更多分享

架構(gòu)師李肯

架構(gòu)師李肯全網(wǎng)同名),一個(gè)專注于嵌入式IoT領(lǐng)域的架構(gòu)師。有著近10年的嵌入式一線開(kāi)發(fā)經(jīng)驗(yàn),深耕IoT領(lǐng)域多年,熟知IoT領(lǐng)域的業(yè)務(wù)發(fā)展,深度掌握IoT領(lǐng)域的相關(guān)技術(shù)棧,包括但不限于主流RTOS內(nèi)核的實(shí)現(xiàn)及其移植、硬件驅(qū)動(dòng)移植開(kāi)發(fā)、網(wǎng)絡(luò)通訊協(xié)議開(kāi)發(fā)、編譯構(gòu)建原理及其實(shí)現(xiàn)、底層匯編及編譯原理、編譯優(yōu)化及代碼重構(gòu)、主流IoT云平臺(tái)的對(duì)接、嵌入式IoT系統(tǒng)的架構(gòu)設(shè)計(jì)等等。擁有多項(xiàng)IoT領(lǐng)域的發(fā)明專利,熱衷于技術(shù)分享,有多年撰寫(xiě)技術(shù)博客的經(jīng)驗(yàn)積累,連續(xù)多月獲得RT-Thread官方技術(shù)社區(qū)原創(chuàng)技術(shù)博文優(yōu)秀獎(jiǎng),榮獲CSDN博客專家、CSDN物聯(lián)網(wǎng)領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、2021年度CSDN&RT-Thread技術(shù)社區(qū)之星、2022年RT-Thread全球技術(shù)大會(huì)講師、RT-Thread官方嵌入式開(kāi)源社區(qū)認(rèn)證專家、RT-Thread 2021年度論壇之星TOP4、華為云云享專家(嵌入式物聯(lián)網(wǎng)架構(gòu)設(shè)計(jì)師)等榮譽(yù)。堅(jiān)信【知識(shí)改變命運(yùn),技術(shù)改變世界】!


歡迎關(guān)注我的gitee倉(cāng)庫(kù)01workstation ,日常分享一些開(kāi)發(fā)筆記和項(xiàng)目實(shí)戰(zhàn),歡迎指正問(wèn)題。

同時(shí)也非常歡迎關(guān)注我的CSDN主頁(yè)和專欄:

【CSDN主頁(yè)-架構(gòu)師李肯】

【RT-Thread主頁(yè)-架構(gòu)師李肯】

【C/C++語(yǔ)言編程專欄】

【GCC專欄】

【信息安全專欄】

【RT-Thread開(kāi)發(fā)筆記】

freeRTOS開(kāi)發(fā)筆記】

有問(wèn)題的話,可以跟我討論,知無(wú)不答,謝謝大家。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7630

    瀏覽量

    140574
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4891

    瀏覽量

    70313
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    419

    瀏覽量

    26399
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ADC3561轉(zhuǎn)換成什么數(shù)據(jù)格式便于高速實(shí)時(shí)通過(guò)WIFI發(fā)送?

    5MHz的16位采樣率,LVDS格式數(shù)據(jù)輸出,使用串口轉(zhuǎn)WIFI模塊受限于串口波特率無(wú)法實(shí)現(xiàn)實(shí)時(shí)發(fā)送,請(qǐng)問(wèn)轉(zhuǎn)換成什么數(shù)據(jù)格式便于高速實(shí)時(shí)
    發(fā)表于 11-18 08:06

    數(shù)據(jù)格式不同,如何在轉(zhuǎn)換求均值

    在圖1中,可讀取wav格式的文件,亦可播放,在后續(xù)的求均值中便會(huì)出錯(cuò),是否因?yàn)?b class='flag-5'>數(shù)據(jù)格式不對(duì)?或者是wav格式的文件用不用先用MATLAB轉(zhuǎn)成txt的數(shù)據(jù)然后再求,如果是那樣的話還能播放
    發(fā)表于 03-10 10:19

    怎么實(shí)現(xiàn)FPGA的新型數(shù)據(jù)格式轉(zhuǎn)換

    運(yùn)算作為數(shù)字信號(hào)處理中最常見(jiàn)的運(yùn)算之一,各大EDA軟件都帶有免費(fèi)的浮點(diǎn)運(yùn)算IP核。通過(guò)對(duì)IP核的生成和例化來(lái)實(shí)現(xiàn)浮點(diǎn)運(yùn)算,把FPGA設(shè)計(jì)者從繁重的代碼編寫(xiě)中解脫了出來(lái),同時(shí)可以對(duì)IP核
    發(fā)表于 08-29 06:50

    如何實(shí)現(xiàn)新型數(shù)據(jù)格式轉(zhuǎn)換

    浮點(diǎn)運(yùn)算作為數(shù)字信號(hào)處理中最常見(jiàn)的運(yùn)算之一,各大EDA軟件都帶有免費(fèi)的浮點(diǎn)運(yùn)算IP核。通過(guò)對(duì)IP核的生成和例化來(lái)實(shí)現(xiàn)浮點(diǎn)運(yùn)算,把FPGA設(shè)計(jì)者從繁重的代碼編寫(xiě)中解脫了出來(lái),同時(shí)可以對(duì)I
    發(fā)表于 10-12 06:19

    如何實(shí)現(xiàn)規(guī)定數(shù)據(jù)格式的不定長(zhǎng)數(shù)據(jù)的接收?

    如何實(shí)現(xiàn)規(guī)定數(shù)據(jù)格式的不定長(zhǎng)數(shù)據(jù)的接收?
    發(fā)表于 12-09 07:48

    處理時(shí)圖片數(shù)據(jù)格式轉(zhuǎn)換需要HWC轉(zhuǎn)CHW和NCHW, 1684是否相關(guān)接口可以使用?

    處理時(shí)圖片數(shù)據(jù)格式轉(zhuǎn)換需要HWC轉(zhuǎn)CHW和NCHW, 1684是否相關(guān)接口可以使用?
    發(fā)表于 09-19 06:41

    數(shù)據(jù)格式,計(jì)算機(jī)中數(shù)據(jù)格式詳細(xì)介紹

    數(shù)據(jù)格式,計(jì)算機(jī)中數(shù)據(jù)格式詳細(xì)介紹    計(jì)算機(jī)中常用的數(shù)據(jù)表示格式有兩種,一是定點(diǎn)格式,二是浮點(diǎn)格式
    發(fā)表于 04-13 11:36 ?3846次閱讀

    新型數(shù)據(jù)格式轉(zhuǎn)換的FPGA實(shí)現(xiàn)

    提出了一種數(shù)據(jù)格式轉(zhuǎn)換方法。使用VHDL語(yǔ)言,采用流水線處理方式將ASCII碼所表示的一定范圍內(nèi)的實(shí)數(shù)轉(zhuǎn)換為單精度浮點(diǎn)數(shù)。
    發(fā)表于 11-18 15:39 ?944次閱讀
    新型<b class='flag-5'>數(shù)據(jù)格式</b><b class='flag-5'>轉(zhuǎn)換</b>的FPGA<b class='flag-5'>實(shí)現(xiàn)</b>

    gps數(shù)據(jù)格式含義說(shuō)明

    本內(nèi)容介紹了gps數(shù)據(jù)格式的含義,給出了GPS輸出的是NMEA-0183的數(shù)據(jù)格式,GPS固定數(shù)據(jù)輸出語(yǔ)句($GPGGA)
    發(fā)表于 12-19 14:57 ?1.3w次閱讀

    CoolFormat3.2C語(yǔ)言代碼格式化工具

    CoolFormat3.2,將C語(yǔ)言代碼格式化的工具。
    發(fā)表于 05-20 17:01 ?20次下載

    C語(yǔ)言 | 用51單片機(jī)實(shí)現(xiàn)公歷與農(nóng)歷星期的轉(zhuǎn)換(完整源代碼

    C語(yǔ)言 | 用51單片機(jī)實(shí)現(xiàn)公歷與農(nóng)歷星期的轉(zhuǎn)換(完整源代碼
    發(fā)表于 11-21 11:36 ?52次下載
    <b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b> | 用51單片機(jī)<b class='flag-5'>實(shí)現(xiàn)</b>公歷與農(nóng)歷星期的<b class='flag-5'>轉(zhuǎn)換</b>(完整源<b class='flag-5'>代碼</b>)

    MDB-RS232適配器數(shù)據(jù)格式分析

    MDB-RS232適配器數(shù)據(jù)格式分析。讓用戶能夠很容易理解發(fā)送和接收的數(shù)據(jù)格式。快速實(shí)現(xiàn)MDB接口的紙幣器,硬幣器和非現(xiàn)金支付刷卡器的數(shù)據(jù)解析。
    發(fā)表于 04-27 15:50 ?7次下載

    C語(yǔ)言進(jìn)階C語(yǔ)言指針的高階用法

    C語(yǔ)言進(jìn)階C語(yǔ)言指針的高階用法
    的頭像 發(fā)表于 08-31 13:24 ?2714次閱讀

    串口通訊的基本概念、數(shù)據(jù)格式

    本文介紹了串口通訊的基本概念、數(shù)據(jù)格式、通訊方式、典型的串口通訊標(biāo)準(zhǔn)等內(nèi)容。
    的頭像 發(fā)表于 04-23 11:13 ?6387次閱讀
    串口通訊的基本概念、<b class='flag-5'>數(shù)據(jù)格式</b>

    一個(gè)工具搞定標(biāo)注數(shù)據(jù)格式轉(zhuǎn)換

    Datumaro 是支持命令行調(diào)用的模式,因此我們可以非常方便地使用 1 行命令完成 2 種不同格式數(shù)據(jù)轉(zhuǎn)換,下面我將基于命令行模式,演示一下 Datumaro 處理標(biāo)注
    的頭像 發(fā)表于 06-13 17:00 ?1358次閱讀
    一個(gè)工具搞定標(biāo)注<b class='flag-5'>數(shù)據(jù)格式</b><b class='flag-5'>轉(zhuǎn)換</b>
    主站蜘蛛池模板: 偷偷狠狠的日日日日 | 一区二区视频在线 | 色多多影视 | 精品成人毛片一区二区视 | 久久伊人网站 | 亚洲五月综合网色九月色 | 日韩午夜r电影在线观看 | 国产一级免费视频 | 狠狠干在线观看 | 亚洲国产日韩欧美在线as乱码 | 中文字幕va| 国产一区美女视频 | 26uuu另类欧美亚洲曰本 | 曰本福利写真片视频在线 | 好硬好湿好爽再深一点h视频 | 色偷偷男人天堂 | 99久久99久久精品免费看子伦 | 成人看片免费无限观看视频 | 小屁孩和大人啪啪 | 又粗又硬又猛又黄的免费视频黑人 | 特黄特黄特色大片免费观看 | 人人艹在线观看 | 欧美综合天天夜夜久久 | 国产在线精品一区二区夜色 | 免费在线黄色网址 | 欧美性猛交xxxx乱大交 | 日本www色高清视频 日本www色视频 | 国产在线色视频 | 1000部啪啪勿入十八免费 | 免费一级e一片在线播放 | 欧美毛片网站 | 欧美激情在线 | 色日本在线 | 黄视频免费观看 | 亚洲免费视频观看 | 国产二区三区毛片 | 天天插综合网 | 2018天天操天天干 | 国产色视频网站免费观看 | 欧美黄页网 | 97久久天天综合色天天综合色 |