Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- #include <string.h>
- #include <math.h>
- int baseCheck (char *num , int srcBas){
- int i, tf=1;
- if (srcBas==2){
- for(i=0;i<strlen(num)-1;i++){
- if(num[i]!='0' && num[i] !='1')
- tf=-1;
- }
- }
- else if (srcBas==16){
- for (i=0;i<strlen(num)-1;i++){
- if((num[i] > '9' || num[i] < 'A') && ((num[i] > 'F') || (num[i] < 'a' && num[i] > 'f'))) {
- tf=-1;
- }
- }
- }
- return tf;
- }
- int decimalV(char *num , int srcBas){ //Decimal Calculation
- int i ,j, tmpnum=0 ,tmp2=0;
- for(i=strlen(num)-2, j=0; i>=0;i--,j++){
- if(num[i] >= 'A' || num[i]<='Z'){
- tmpnum=num[i]-'A'+10;
- }
- else if (num[i] >='a' || num[i]<='z'){
- tmpnum=num[i]-'a'+10;
- }
- else if( num[i] >='0' || num[i] <= '9'){
- tmpnum=num[i]-'0';
- }
- else {
- printf("Error , Invalid Number");
- return 0;
- }
- tmp2=tmp2+((int)pow(srcBas,j)*tmpnum);
- }
- return tmp2;
- }
- char* destBas(int decimalnum , int destbase){ //Destination convertion
- int i,tmp ,size;
- char* ans;
- size=((int)(log(decimalnum)/log(destbase)) +1);
- ans=(char*)malloc(size*sizeof(char));
- for(i=strlen(ans)-2 ; i >= 0 ; i++){
- tmp=decimalnum%destbase;
- if(tmp>=0 || tmp <= 9){
- ans[i]=tmp+'0';
- }
- else if(tmp>='A'-10 || tmp <='Z'-10){
- ans[i]=tmp+'A'-10;
- }
- else if(tmp >='a'-10 || tmp <='z'-10){
- ans[i]=tmp+'a'-10;
- }
- decimalnum=decimalnum/destbase;
- }
- return ans;
- }
- char* baseConvert(char *num, int srcBas, int destBas){
- char *ans;
- if(srcBas<2 || srcBas >36){
- printf("Source base must be between 2 to 36!\n");
- return " ";
- }
- if(destBas<2 || destBas >36){
- printf("Destination base must be between 2 to 36!\n");
- return " ";
- }
- return ans;
- }
- void main(){
- printf("%s\n", baseConvert("aBc", 16, 10));
- printf("%s\n", baseConvert("1646244", 10, 36));
- }
Add Comment
Please, Sign In to add comment