ONSEMI(安森美)半导体IC芯片全系列-亿配芯城-几个实用的嵌入式C程序分享
你的位置:ONSEMI(安森美)半导体IC芯片全系列-亿配芯城 > 芯片资讯 > 几个实用的嵌入式C程序分享
几个实用的嵌入式C程序分享
发布日期:2024-01-09 13:11     点击次数:191

在学习和工作开发的时候,经常需要使用到各种各样不太常用的操作,这种情况一般是自己手动写一些小程序来处理。因为它们不太常用,所以经常用了又没保存,等到下一次在使用的时候又需要重写,这样的非常浪费时间和精力。

所以想在这里统一记录一下,以备下次重新使用。代码以实用为主,如果缺陷,欢迎指出。

1、十六进制字符转整型数字

功能:将16进制的字符串转换为10进制的数字。我是没有找到相应的库函数,所以参考网上的代码自己手动写了个函数来实现。

常用的函数有atoi,atol,他们都是将10进制的数字字符串转换为int或是long类型,所以在有些情况下不适用。

/*=============================================================================
#    FileName: hex2dec.cpp
#    Desc: Convert a hex string to a int number
#    Author: Caibiao Lee
#   Version: 
#   LastChange: 2018-11-26 
#   History:
=============================================================================*/
 
#include   
#include   
#include   
#include 
 
int c2i(char ch)  
{  
    // 如果是数字,	电子元器件采购网	则用数字的ASCII码减去48, 如果ch = '2' ,则 '2' - 48 = 2  
    if(isdigit(ch))  
       return ch - 48;  
 
    // 如果是字母,但不是A~F,a~f则返回  
    if( ch  'F' && ch  'z' )  
      return -1;  
 
    // 如果是大写字母,则用数字的ASCII码减去55, 如果ch = 'A' ,则 'A' - 55 = 10  
    // 如果是小写字母,则用数字的ASCII码减去87, 如果ch = 'a' ,则 'a' - 87 = 10  
    if(isalpha(ch))  
       return isupper(ch) ? ch - 55 : ch - 87;  
 
    return -1;  
} 
 
int hex2dec(char *hex)  
{  
   int len;  
   int num = 0;  
   int temp;  
   int bits;  
   int i;  
   char str[64] = {0};
 
 if(NULL==hex)
 {
  printf("input para error 
");
  return 0;
 }
 
 
 if(('0'==hex[0])&&(('X'==hex[1])