⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numstr.c

📁 数据进制转换源码
💻 C
字号:
#include <stdlib.h>#include "./numstr.h"#include <stdio.h>int main(){		printf("7 in bin = %s\n\"3F\" in decimal = %d\n",				formatBin(7), parseHex("3F"));	return 0;	}int parseBin(char* bin){	//Using dibble-dobble method	int res;	char* ptr;		res = 0;	ptr = bin;		while((*ptr)=='0') ptr++;		while(*ptr)	{		if((*ptr!='0')&&(*ptr!='1')) return -1;		res = res*2+*ptr-'0';		ptr++;	}		return res;	}int parseOct(char* oct){	int res;	char* ptr;		res = 0;	ptr = oct;		while((*ptr)=='0') ptr++;		while(*ptr)	{		if((*ptr<'0')||(*ptr>'7')) return -1;		res = res*8+*ptr-'0';		ptr++;	}		return res;}int parseDec(char* dec){	int res;	char* ptr;		res = 0;	ptr = dec;		while((*ptr)=='0') ptr++;		while(*ptr)	{		if((*ptr<'0')||(*ptr>'9')) return -1;		res = res*10+*ptr-'0';		ptr++;	}		return res;}int parseHex(char* hex){	int res;	int val;	char* ptr;		res = 0;	ptr = hex;		while((*ptr)=='0') ptr++;		while(*ptr)	{		if(!((*ptr<'0')||(*ptr>'9')))		{			val = *ptr - '0';		}		else if(!((*ptr<'a')||(*ptr>'f')))		{			val = *ptr - 'a' + 10;		}		else if(!((*ptr<'A')||(*ptr>'F')))		{			val = *ptr - 'A' + 10;		}		else		{			return -1;		}				res = res*16+val;				ptr++;	}		return res;}char* formatBin(int bin){	char* str;	int i, j, m, k;		i = 0;	j = bin;	k = 1;		while(j/=2) i++; i++;			str = (char*)malloc(i+1);	j=bin;		while(k<=i)	{		str[i-k] = j%2 + '0';		k++;		j/= 2;	}		str[i]=0;		return str;}char* formatOct(int oct){	char* str;	int i, j, m, k;		i = 0;	j = oct;	k = 1;		while(j/=8) i++; i++;		str = (char*)malloc(i+1);	j=oct;		while(k<=i)	{		str[i-k] = j%8 + '0';		k++;		j/= 8;	}		str[i]=0;		return str;}char* formatDec(int dec){	char* str;	int i, j, m, k;		i = 0;	j = dec;	k = 1;		while(j/=10) i++; i++;		str = (char*)malloc(i+1);	j=dec;		while(k<=i)	{		str[i-k] = j%10 + '0';		k++;		j/= 10;	}		str[i]=0;		return str;}char* formatHex(int hex){	char* str;	int i, j, m, k;		i = 0;	j = hex;	k = 1;		while(j/=16) i++; i++;			str = (char*)malloc(i+1);	j=hex;		while(k<=i)	{		str[i-k] = (j%16)<10?(j%16)+'0':(j%16)-10+'A';		k++;		j/= 16;	}		str[i]=0;		return str;}char* formatHexL(int hex){	char* str;	int i, j, m, k;		i = 0;	j = hex;	k = 1;		while(j/=16) i++; i++;			str = (char*)malloc(i+1);	j=hex;		while(k<=i)	{		str[i-k] = (j%16)<10?(j%16)+'0':(j%16)-10+'a';		k++;		j/= 16;	}		str[i]=0;		return str;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -