在C语言中,有字符串转十六进制的函数等,现菜鸟急需一十六进制转十进制的函数,解决即派分,谢谢啊!!!
Example
/* ITOA.C: This program converts integers of various
* sizes to strings in various radixes.
*/
#include <stdlib.h>
#include <stdio.h>
void main( void )
{
char buffer[20];
int i = 3445;
long l = -344115L;
unsigned long ul = 1234567890UL;
_itoa( i, buffer, 10 );
printf( "String of integer %d (radix 10): %s\n", i, buffer );
_itoa( i, buffer, 16 );
printf( "String of integer %d (radix 16): 0x%s\n", i, buffer );
_itoa( i, buffer, 2 );
printf( "String of integer %d (radix 2): %s\n", i, buffer );
_ltoa( l, buffer, 16 );
printf( "String of long int %ld (radix 16): 0x%s\n", l,
buffer );
_ultoa( ul, buffer, 16 );
printf( "String of unsigned long %lu (radix 16): 0x%s\n", ul,
buffer );
}
Output
String of integer 3445 (radix 10): 3445
String of integer 3445 (radix 16): 0xd75
String of integer 3445 (radix 2): 110101110101
String of long int -344115 (radix 16): 0xfffabfcd
String of unsigned long 1234567890 (radix 16): 0x499602d2
写一个函数来转换
你收到的十六进制数据是字符串形式的吧:
strtol
例如 int a = strtol( "abcd",0,16);
输出到编辑框用
itoa或者sprintf都可以
char sz[10];
itoa(a,sz,16);
或者sprintf(sz,"%d",a);
public: int AddrChange(char* addr)
{
char c;
int i, sjz=0;
for(i =0;i<5;i++)
{
c=addr[i];
if (c>=0 && c<=9)
sjz=sjz*16+c-0;
else if (c>=A && c<=F)
sjz=sjz*16+c-A+10;
else break;
}
return sjz;
}
试试sprintf