16进制(字符串地址)转10进制
#include <stdio.h>
#include <math.h>
#include <ctype.h>
double HexToDec(char *);
int main()
{
char Addr[9] = "FED10000";
char *Pt;
Pt = Addr;
double value = 0;
value = HexToDec(Pt);
printf("value = %.0f\n", value);
getchar();
return 0;
}
double HexToDec(char *Address)
{
int Bit = 0, i = 0;
double AddrDec = 0, DecValue = 0;
while(*Address++ != '\0')
Bit++;
*Address--;
while(i < Bit)
{
*Address--;
if (isalpha(*Address))
{
if (*Address >= 'a' && *Address <= 'f')
*Address -= 32;
if (*Address >= 'A' && *Address <= 'F')
AddrDec = *Address - 55;
}
else
{
AddrDec = *Address - 48;
}
DecValue += AddrDec * pow(16, i);
i++;
}
return DecValue;
}
2进制(字符串地址)转10进制
#include <stdio.h>
#include <math.h>
#include <ctype.h>
double BinToDec(char *);
int main()
{
char Addr[9] = "11111110110100010000000000000000";
char *Pt;
Pt = Addr;
double value = 0;
value = BinToDec(Pt);
printf("value = %.0f\n", value);
getchar();
return 0;
}
double BinToDec(char *Address)
{
int Bit = 0, i = 0;
double DecValue = 0;
while(*Address++ != '\0')
Bit++;
*Address--;
while(i < Bit)
{
*Address--;
DecValue += (int) ((*Address)-48) * pow(2, i);
i++;
}
return DecValue;
}