1. 程式人生 > >C語言 將十六進制字符串轉為十六進制數 (二進制、十進制都適用)

C語言 將十六進制字符串轉為十六進制數 (二進制、十進制都適用)

include 字符串 %d style pre 指針 main 8進制 16進制

主要利用 long int strtol(const char *nptr,char **endptr,int base); 函數

函數說明: 

  參數base範圍從2至36,或0。參數base代表采用的進制方式,如base值為10則采用10進制,若base值為16則采用16進制等。當base值為0時則是采用10進制做轉換,但遇到如’0x’前置字符則會使用16進制做轉換、遇到’0’前置字符而不是’0x’的時候會使用8進制做轉換。一開始strtol()會掃描參數nptr字符串,跳過前面的空格字符,直到遇上數字或正負符號才開始做轉換,再遇到非數字或字符串結束時(‘\0‘)結束轉換,並將結果返回。若參數endptr不為NULL,則會將遇到不合條件而終止的nptr中的字符指針由endptr返回;若參數endptr為NULL,則會不返回非法字符串。這裏主要是兩個參數:nptr(要轉換的字符串)、base(代表采用的進制方式
//例子 
    #include <stdio.h>
  #include <stdlib.h>
  void main()
  {
      char* p = "0x1b";
      char* str;
      long i = strtol(p, &str, 16);
      printf("%d\r\n", i);
  }

//輸出值為 27

C語言 將十六進制字符串轉為十六進制數 (二進制、十進制都適用)