Я использую функцию ниже для преобразования шестнадцатеричного числа в десятичное, но оно не печатает правильный результат. Может ли кто-нибудь помочь мне с этим? Thanku ..Функция c для преобразования шестнадцатеричного в десятичное представление
#include<stdio.h>
#include<stdlib.h>
long hextoint(char hex)
{
printf("%x\n",hex);
long hexa=0;
int byte;
for(byte=0;byte<8;byte++)
{
if(hex & (0x0001<<byte))
{
hexa+=1*(2^byte);
}
else
{
hexa+=(0*(2^byte));
}
}
return hexa;
}
int main()
{
char content[]={0x1F,0xF2,0x24};
int i;
for(i=0;i<3;i++)
{
long dec=hextoint(content[i]);
printf("%ld\n",dec);
}
}
'^' - побитовый оператор XOR, а не «мощный». Вы ищете '1 << byte'. Кроме того, 'hexa + = 0 *' является избыточным. –
Ваша инициализация содержимого [] неверна. – ypnos