千家信息网

如何实现linux下ASCII转HEX

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,今天就跟大家聊聊有关如何实现linux下ASCII转HEX,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在项目开发过程有时需要对一串数字的16
千家信息网最后更新 2024年11月11日如何实现linux下ASCII转HEX

今天就跟大家聊聊有关如何实现linux下ASCII转HEX,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

在项目开发过程有时需要对一串数字的16进制文本转换成16进制数组,这是实现方法:

#include #include #include #include  /*isspace,toupper的头文件*/#include  /*uint8_t的头文件*//*去除数组中的空格*/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 转16进制数组,失败返回-1,成功返回0*/int ascii2hex(const char *string,int length,uint8_t hex[],int *hexlen){    char src_arr[length+2];/*奇数个字符首位补'0',字符串结束符'\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进制转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;}

看完上述内容,你们对如何实现linux下ASCII转HEX有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

0