linux內核算法---hex_to_bin分享

這是我從內核摳出來的一段代碼,用處就是傳入一個字符,便可以用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

相關文章
相關標籤/搜索