C++

C++ middle hexadecimal string to a number


C++ 106 base string to number (numeric)

There are two main methods, both of which are the use of existing functions:

Method 1: sscanf ()

Function name: sscanf Power: formats input from a string int sscanf(char *string, char *format[,argument…] );

The above format is %. x is to format a string as a hexadecimal number

Example:

#include <stdio.h>
void main()
{
  char* p = "0x1a";
  int nValude = 0;
  sscanf(p, "%x", &nValude);
  printf("%d\r\n", nValude);
}

Output:

26

Method 2: strtol ()

Function name: strtol Power: converts a string to a long integer Usage: long strtol(char *str, char **endptr, int base);

So base up here is what we’re going to convert to

Example:

#include <stdio.h>
#include <stdlib.h>
void main()
{
  char* p = "0x1b";
  char* str;
  long i = strtol(p, &str, 16);
  printf("%d\r\n", i);
 }

Output:

27

In fact, there is another method, which is to use a string array initialized to 09a~f, that is, a table of 106 corresponding table, which can be used to calculate the value of a string of 106 hexadecimal, but this is too much trouble and is not recommended.

If you have any questions, please leave a message or come to the site community to exchange discussion, thank you for reading, hope to help you, thank you for your support of the site!