コード例 #1
0
ファイル: atoi.c プロジェクト: vin120/linux-source
int myatoi(const char *str)		//将字符str转换为整数
{
	const char *p = NULL;
	int neg;	//标志位,0代表负数,1代表正数
	if (str[0] == '-')	//str为负整数,置neg标志位为0
	{
		neg = 0;
		p = ++str;	//将字符串str字符串中的'-'去除,从str的第二位开始转化
	}
	else	//否则置neg标志位为1
	{
		neg = 1;
		p = str;
	}

	int i_len = len(p);	//调到字符串长度
	int i_temp = i_len;
	int value = 0;

	int i = 0;
	for (; i < i_len; i++)	//从str[0]开始遍历字符串
	{
		value += (power10(i_temp - 1) * char2i(p[i]));
		i_temp--;
	}

	if (neg == 0)	//str为负数 ,将转化后的字符串前
	{
		return 0 - value;
	}
	else
	{
		return value;
	}
}
コード例 #2
0
ファイル: analyse.c プロジェクト: AakaFosfor/trigger
/*----------------------------------------------------------string2int()
 Purpose: convert string (hex eg:ab or int eg: 234) to int 
 Parameters:
   Input: - c:pointer to char: least significant digit of number
          - length: number of digits
          - base b = h : string represents hexa number
                     d : string represents decimal number
   Output: w32 *num 
 Return: 1 if error
         0 if ok
 Output: *num - converted number
*/
int string2int(char *cstr,w32 length,w32 *num,char b){
 int i;
 w32 digit,base,power;
//printf("string2int: cstr%s len:%d base:%c\n", cstr, length, b);
 if(length <=0){
  printf("string2int error: string length=%i <=0 \n",length);
  return 1;
 }
 if(cstr == NULL){
  printf("string2int error: cstr=NULL \n");
  return 1;
 }
 //printf("string2int start:%s strlength=%i \n",cstr,length);

 if(b == 'h') base=16 ;
 else if( b == 'd') base =10;
 else{
  printf("string2int error: unknown base %cstr \n",b);
  return 1;
 }
 if(length>(2*sizeof(w32)) && b =='h'){
  printf("string2int error: length=%i >2*sizeof(w32) \n",length);
  return 1;
 }
 if(length>9 && b == 'd'){
  printf("string2int error: length=%i >2*sizeof(w32) \n",length);
  return 1;
 }
*num=0; i=0; power=1; cstr= cstr + length-1;
while(i<(int)length){
  //printf("ss= %c \n",*cstr);
  if(char2i(*cstr,&digit) == 0) *num=*num+digit*power; else return 1;
  power=power*base;
  cstr--;
  i++;
  if(*cstr==' ') break;   // ignore leading spaces
};
//if((b =='h'))printf("num= 0x%x \n",*num);else printf("num= %i \n",*num);
return 0;
}