コード例 #1
0
int main(int argc, char *argv[])
{
 //char *argv[]={"conv","8","10","107"};
 
 
 long long int b1=convert_dec(argv[1],10);
 long long int b2=convert_dec(argv[2],10);
 
 //long long int no=convert_dec(argv1[3],b1);printf("\n");


 //printf("%lld\n\n%lld\n\n%lld",b1,b2,no);
 
 // check base b1
 
 int flag=0;
 int size=strlen(argv[3]);
 int i=0;

 for (i=0;i<size;i++)
 {  char cc=argv[3][i];
 	
	 if (conv(cc)>=b1 || conv(cc)<0)
 	{
	 	flag=1;
	 	break;
	 }
 
 }
 
 if (flag==1)
 {
 	printf("0");
 }
 else  // convert to other base
 { long long int no=convert_dec(argv[3],b1);
   long long int num=no;
    char pr[1000];
    int ind=0;
    
	if (num==0)
       {
        printf("0");
		
       }
   else{
   	    
   while(num) // store digits in pr[]
   {
   	int dig=num%b2;
   	num=num/b2;
   	pr[ind++]=dig;
   
   }
   
   
   for (ind=(ind-1);ind>=0;ind--)
   {
   	int dig=pr[ind];
   	
   	   if(dig==10)
   	   printf("A");
       else if (dig==11)
   	   printf("B");
   	   else if (dig==12)
   	   printf("C");
   	   else if (dig==13)
   	   printf("D");
   	   else if (dig==14)
   	   printf("E");
   	   else if (dig==15)
   	   printf("F");
   	   else
   	   printf("%d",dig);
    }
  
   }
   	
 }  // close else
  
 
 
 
 
 
 
return 0;


}
コード例 #2
0
ファイル: printf.c プロジェクト: projectnano/ir-remote
/*
 *uart_printf(char*)
 *Converts and formats values to be sent via char UART. Works similar to normal printf function.
 *INPUT: Char* EX: uart_printf("DATA: %i\r\n", datvar);
 *RETURN: None
 */
void uart_printf(char *format, ...)
{
    char c;
    int i;
    long l;

    va_list list;														//Make the arguement list
    va_start(list, format);

    while(c = *format++)												//run through the input till the end.
    {
        if(c == '%')													//% denotes the variable format character
        {
            switch(c = *format++)
            {
                case 's':                       						// strings
                    uart_puts(va_arg(list, char*));
                    break;

                case 'c':                       						// chars
                    uart_putc(va_arg(list, char));
                    break;

                case 'i':                       						// signed ints
                	i = va_arg(list, int);
                    if(i < 0)
                    {
                    	i = -i;
                     	uart_putc('-');
                    }
                    convert_dec((unsigned)i, divider + 5);
                    break;

                case 'u':                      							// unsigned ints
                    i = va_arg(list, int);
                    convert_dec((unsigned)i, divider + 5);
                    break;

                case 'l':                       						// signed longs
                    l = va_arg(list, long);
                    if(l < 0)
                    {
                    	l = -l;
                    	uart_putc('-');
                    }
                    convert_dec((unsigned long)l, divider);
                    break;

                case 'n':                       						// unsigned longs
                    l = va_arg(list, long);
                    convert_dec((unsigned long)l, divider);
                    break;

                case 'x':                       						// 16bit Hex
                    i = va_arg(list, int);
                    uart_putc(convert_hex(i >> 12));
                    uart_putc(convert_hex(i >> 8));
                    uart_putc(convert_hex(i >> 4));
                    uart_putc(convert_hex(i));
                    break;

                case 0:
                	return;
                default:
                	uart_putc(c);										//can't find formating. just print it.
            }
        }
        else
        {
        	uart_putc(c);
        }
    }