(原創) 如何將16進位的ACSII值轉成相對應的字元? (C/C++) (C)

Abstract
若字串記載的是16進位的數值,該如何轉成相對應的ASCII值呢?

Introduction
若文字檔內記載的是16進位的數值,我們希望讀進字串後,轉成相對應的ASCII值。

C語言 / strtol.c

 1  /*  
 2  (C) OOMusou 2007  http://oomusou.cnblogs.com
 3 
 4  Filename    : strtol.c
 5  Compiler    : Visual C++ 8.0
 6  Description : Demo how to convert 16bit string to ACSII
 7  Release     : 02/06/2008 1.0
 8  */
 9 
10  #include  < stdio.h >
11  #include  < stdlib.h >
12 
13  int  main() {
14     char   * =   " 51 " * ends;
15     char  c  =  ( char )strtol(s,  & ends,  16 );
16    printf( " %c\n " , c);
17  }


執行結果

Q


51為Q的16進位表示法,使用strtol()這個定義在stdlib.h的函數,將char *轉成long int,然後再轉成char,即為所對應的ASCII字元。

strtol()第一個參數傳的是欲轉換的字串,第二個參數必須是個指標,若轉換過程有誤,會透過第二個參數傳出錯誤指標,由於strtol()要改變的就是指標位址,而不是指標所指的值,所以要將指標的位址傳進去,也就是指標的指標,所以傳入&ends。

你可能感兴趣的:(c/c++)