(原創) 如何將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。

posted on 2008-02-06 18:01  真 OO无双  阅读(9903)  评论(0编辑  收藏  举报

导航