這是我從內核摳出來的一段代碼,用處就是傳入一個字符,便可以用printf語句%d以十進制數的格式輸出,同時也能夠以%p地址的形式輸出。spa
代碼以下:.net
#include <stdio.h> #include <stdlib.h> #include <ctype.h> #define tolower(c) __tolower(c) #define toupper(c) __toupper(c) static inline unsigned char __tolower(unsigned char c) { //判斷字符c是否爲大寫英文字母 說明:當參數c爲大寫英文字母(A-Z)時,返回非零值,不然返回零。 if(isupper(c)) c -= 'A' - 'a' ; return c ; } static inline unsigned char __toupper(unsigned char c ) { //判斷字符c是否爲小寫英文字母 說明:當參數c爲小寫英文字母(a-z)時,返回非零值,不然返回零。 if(islower(c)) c-= 'a' - 'A' ; return c ; } int hex_to_bin(char ch) { if((ch > '0') && (ch <= '9')) return ch - '0' ; ch = tolower(ch) ; if((ch >= 'a') && (ch <= 'f')) return ch - 'a' + 10 ; return -1 ; } int main(void) { printf("%d\n",hex_to_bin('1')); printf("%d\n",hex_to_bin('f')); printf("%d\n",hex_to_bin('a')); printf("%d\n",hex_to_bin('9')); printf("%p\n",hex_to_bin('1')); printf("%p\n",hex_to_bin('f')); printf("%p\n",hex_to_bin('a')); printf("%p\n",hex_to_bin('9')); return 0 ; }運行結果:
本文同步分享在 博客「Engineer-Bruce_Yang」(CSDN)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。code