怎么样把一个16进制的字符串转换成int
例str="7F8D7B4A" =>自己写当前没问题,我想知道有没有现成的函数!

解决方案 »

  1.   

    long strtol( const char *nptr, char **endptr, int base );Parameters:
      nptr:Null-terminated string to convert 
      endptr:Pointer to character that stops scan
      base:Number base to use
      

  2.   

    char a[10]="7F8D7B4A";
    DWORD val = strtoul( a, NULL, 16);
      

  3.   

    long l = strtoul("7F",NULL,16);
      

  4.   

    CString aa="C010";
    int x;
    sscanf(aa,"%x",&x);
      

  5.   

    unsigned long strtoul(
       const char *nptr,
       char **endptr,
       int base 
    );
    MSDN上有
      

  6.   

    #include <stdlib.h>
    #include <stdio.h>void main( void )
    {
       char   *string, *stopstring;
       double x;
       long   l;
       int    base;
       unsigned long ul;
       string = "3.1415926This stopped it";
       x = strtod( string, &stopstring );
       printf( "string = %s\n", string );
       printf("   strtod = %f\n", x );
       printf("   Stopped scan at: %s\n\n", stopstring );
       string = "-10110134932This stopped it";
       l = strtol( string, &stopstring, 10 );
       printf( "string = %s", string );
       printf("   strtol = %ld", l );
       printf("   Stopped scan at: %s", stopstring );
       string = "10110134932";
       printf( "string = %s\n", string );
       /* Convert string using base 2, 4, and 8: */
       for( base = 2; base <= 8; base *= 2 )
       {
          /* Convert the string: */
          ul = strtoul( string, &stopstring, base );
          printf( "   strtol = %ld (base %d)\n", ul, base );
          printf( "   Stopped scan at: %s\n", stopstring );
       }
    }
    Outputstring = 3.1415926This stopped it
       strtod = 3.141593
       Stopped scan at: This stopped itstring = -10110134932This stopped it   strtol = -2147483647   Stopped scan at: This stopped itstring = 10110134932
       strtol = 45 (base 2)
       Stopped scan at: 34932
       strtol = 4423 (base 4)
       Stopped scan at: 4932
       strtol = 2134108 (base 8)
       Stopped scan at: 932