📄 numfmt.c
字号:
#include<stdio.h>#include<stdlib.h>#define U1 unsigned charvoid printBinary(U1 nbr){ U1 i; printf("["); for(i=128;i>0;i=i/2) { if(nbr&i){ printf("1"); } else{ printf("0"); } } printf("]"); return;}/*end printBinary*//*-----------------------------------------------------------------*/void printFloat(char *str){ float f; U1 *uptr; int i; f = (float)atof(str); uptr = (U1*)&f; printf("FLOAT=%f\n",f); printf("DEC [0]->[3]\t"); for(i=0;i<4;i++){ printf("[%+4d]",uptr[i]); } printf("\n"); printf("DEC [3]->[0]\t"); for(i=3;i>=0;i--){ printf("[%+4d]",uptr[i]); } printf("\n"); printf("HEX [0]->[3]\t"); for(i=0;i<4;i++){ printf("[%4x]",uptr[i]); } printf("\n"); for(i=0;i<4;i++) { printf("BIN [%u]\t",i); printBinary(uptr[i]); printf("\n"); } printf("\n"); printf("FLOAT=%f\n",*((float*)uptr)); return;}/*end printFloat*//*-----------------------------------------------------------------*/void printDouble(char *str){ double d; U1 *uptr; int i; d = atof(str); uptr = (U1*)&d; printf("DOUBLE=%f\n",d); printf("DEC [0]->[7]\t"); for(i=0;i<8;i++){ printf("[%+4d]",uptr[i]); } printf("\n"); printf("DEC [7]->[0]\t"); for(i=7;i>=0;i--){ printf("[%+4d]",uptr[i]); } printf("\n"); printf("HEX [0]->[7]\t"); for(i=0;i<8;i++){ printf("[%4x]",uptr[i]); } printf("\n"); for(i=0;i<8;i++) { printf("BIN [%u]\t",i); printBinary(uptr[i]); printf("\n"); } printf("\n"); printf("DOUBLE=%f\n",*((double*)uptr)); return;}/*end printDouble*//*-----------------------------------------------------------------*/void printInteger(char *str){ long long I; float f; U1 *uptr; int i; f = atof(str); I = (long long)f; uptr = (U1*)&I; printf("S8=%lld\n",I); printf("DEC [0]->[7]\t"); for(i=0;i<8;i++){ printf("[%+4d]",uptr[i]); } printf("\n"); printf("DEC [7]->[0]\t"); for(i=7;i>=0;i--){ printf("[%+4d]",uptr[i]); } printf("\n"); printf("HEX [0]->[7]\t"); for(i=0;i<8;i++){ printf("[%4x]",uptr[i]); } printf("\n"); for(i=0;i<8;i++) { printf("BIN [%u]\t",i); printBinary(uptr[i]); printf("\n"); } printf("\n"); printf("S8=%lld\n",*((long long*)uptr)); return;}/*end printInteger*//*-----------------------------------------------------------------*/void printChar(char *str){ char u; U1 *uptr; u = str[0]; uptr = &u; printf("CHAR=%c\n",u); printf("DEC\t"); printf("[%-4d]",uptr[0]); printf("\n"); printf("HEX\t"); printf("[%-4x]",uptr[0]); printf("\n"); printf("BIN\t"); printBinary(uptr[0]); printf("\n"); printf("CHAR=%c\n",*uptr); return;}/*end printChar*//*-----------------------------------------------------------------*/void printUsage(){ printf("\n\tusage: bformat type value\n\n"); printf("\tdisplays byte-wise decomposition of value\n\n"); printf("\ttype:\n"); printf("\td=double\n"); printf("\tf=float\n"); printf("\ti=integer\n"); printf("\tc=ASCII char\n"); return;}/*end printUsage*//*-----------------------------------------------------------------*/void main(int argc, char*arg[]){ char opcode; if((arg[1]==NULL)||(arg[2]==NULL)) { printf("Not enough arguments\n"); printUsage(); return; } opcode = arg[1][0]; switch(opcode) { case 'f':{printFloat(arg[2]);}break; case 'd':{printDouble(arg[2]);}break; case 'i':{printInteger(arg[2]);}break; case 'c':{printChar(arg[2]);}break; default: { printf("Bad opcode"); printUsage(); return; } } return;}/*end main*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -