?? numstr.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 + -