C语言常用的一些转换工具函数!

2021-08-03 16:56

阅读:800

标签:str   sig   一个   模式   hex   signed   十六进制   ==   说明   1、字符串转十六进制 代码实现: void StrToHex(char *pbDest, char *pbSrc, int nLen){  char h1,h2;  char s1,s2;  int i;    for (i=0; i 9)            s1 -= 7;        s2 = toupper(h2) - 0x30;        if (s2 > 9)            s2 -= 7;        pbDest[i] = s1*16 + s2;    }} 2、十六进制转字符串 代码实现: void HexToStr(char *pszDest, char *pbSrc, int nLen){    char    ddl, ddh;    for (int i = 0; i  57) ddh = ddh + 7;        if (ddl > 57) ddl = ddl + 7;        pszDest[i * 2] = ddh;        pszDest[i * 2 + 1] = ddl;    }    pszDest[nLen * 2] = ‘\0‘;} 或者 u16 Hex2StringArray (u8 *pSrc,  u16 SrcLen, u8 *pObj){    u16 i=0;    for(i=0;    i= ‘9‘ || *str  10)        *pbDest = 0;    tmp = 1;    *pbDest = 0;    for (i=nLen-1; i>=0; i--)    {        *pbDest += tmp*(*(pbSrc+i)-‘0‘);        tmp = tmp*10;    }} 效果:字符串:”123” 转为 123 第三种:包含转为浮点数:   //m^n函数//返回值:m^n次方.u32 NMEA_Pow(u8 m,u8 n){    u32 result=1;        while(n--)result*=m;        return result;}//str转换为数字,以‘,‘或者‘*‘结束//buf:数字存储区//dx:小数点位数,返回给调用函数//返回值:转换后的数值int NMEA_Str2num(u8 *buf,u8*dx){    u8 *p=buf;    u32 ires=0,fres=0;    u8 ilen=0,flen=0,i;    u8 mask=0;    int res;    while(1) //得到整数和小数的长度    {        if(*p==‘-‘){mask|=0X02;p++;}//是负数        if(*p==‘,‘||(*p==‘*‘))break;//遇到结束了        if(*p==‘.‘){mask|=0X01;p++;}//遇到小数点了        else if(*p>‘9‘||(*p> 16) & 0xFF);    buf[2] = ((u32Value >> 8) & 0xFF);    buf[3] = (u32Value & 0xFF);}   效果:整型 50 转字符数组 {‘\0’,’\0’,’\0’,’2’}   u8数组转u32   void U8ArrayToU32(uint8_t *buf, uint32_t *u32Value){    *u32Value = (buf[0] 


评论


亲,登录后才可以留言!