真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何實(shí)現(xiàn)linux下ASCII轉(zhuǎn)HEX

今天就跟大家聊聊有關(guān)如何實(shí)現(xiàn)linux下ASCII轉(zhuǎn)HEX,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了青浦免費(fèi)建站歡迎大家使用!

在項(xiàng)目開發(fā)過程有時(shí)需要對一串?dāng)?shù)字的16進(jìn)制文本轉(zhuǎn)換成16進(jìn)制數(shù)組,這是實(shí)現(xiàn)方法:

#include 
#include 
#include 
#include  /*isspace,toupper的頭文件*/
#include  /*uint8_t的頭文件*/
/*去除數(shù)組中的空格*/
char *trim(char *str)
{
    if(str == NULL || *str == '\0')
        return NULL;
    int len = strlen(str);
    char *p = str;
    while(*p != '\0'){
        while(isspace(*p)){
            memmove(p,p+1,strlen(p+1)+1);
        }
        p++;
    }
    return str;
}

/*ascii 轉(zhuǎn)16進(jìn)制數(shù)組,失敗返回-1,成功返回0*/
int ascii2hex(const char *string,int length,uint8_t hex[],int *hexlen)
{
    char src_arr[length+2];/*奇數(shù)個(gè)字符首位補(bǔ)‘0’,字符串結(jié)束符'\0',所以是+2*/
    int src_len=0,i;
    char ah,al;
    uint8_t ih,il;
    if(string == NULL || hex == NULL || length <1 || hexlen == NULL){
        return -1;
    }
    memset(src_arr,0x00,sizeof(src_arr));
    memcpy(src_arr,string,length);
    if(trim(src_arr) == NULL)
        return -1;
    src_len = strlen(src_arr);
    if(src_len%2){
        *hexlen = src_len/2 + 1;
        memmove(&src_arr[1],&src_arr[0],src_len);
        src_arr[0] = '0';
    }else{
        *hexlen = src_len/2;
    }
    for(i = 0;i < *hexlen;i++){
        ah = src_arr[2*i];
        al = src_arr[2*i+1];
        ih = (ah > '9') ? (toupper(ah) - 'A' + 10):(ah - '0');
        il = (al > '9') ? (toupper(al) - 'A' + 10):(al - '0');
        hex[i] = ih * 16 + il;
    }
    return 0;
}

/*16進(jìn)制轉(zhuǎn)ascii ,失敗返回-1,成功返回0*/
int hex2ascii(uint8_t *src, char dest[], int len)
{
    uint8_t dh,dl;  //字符串的高位和低位
    int i;
    if(src == NULL || dest == NULL || len < 1){
        return -1;
    }   
    for(i = 0; i < len; i++){
        dh = src[i] / 16;
        dh = (dh > 9) ? (dh-10+'A'):(dh + '0');
        dl = src[i] % 16;
        dl = (dl > 9) ? (dl-10+'A'):(dl + '0');
        dest[2*i] = dh; 
        dest[2*i+1] = dl;
    }
    dest[2*i] = '\0';
    return 0;
}

看完上述內(nèi)容,你們對如何實(shí)現(xiàn)linux下ASCII轉(zhuǎn)HEX有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


本文題目:如何實(shí)現(xiàn)linux下ASCII轉(zhuǎn)HEX
網(wǎng)站地址:http://weahome.cn/article/ijiogs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部