summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlshprung <lshprung@yahoo.com>2022-05-24 12:58:08 -0700
committerlshprung <lshprung@yahoo.com>2022-05-24 12:58:08 -0700
commit69c1e5264137c5ff3369acf3c0ece8fbbce67dec (patch)
treefbe7fea7999dab5fc81066bdbfef341ee7d9bc89
First commit
-rw-r--r--.gitignore5
-rw-r--r--int2bin.c67
2 files changed, 72 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d320f96
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+*
+
+!int2bin.c
+
+!.gitignore
diff --git a/int2bin.c b/int2bin.c
new file mode 100644
index 0000000..4917a3d
--- /dev/null
+++ b/int2bin.c
@@ -0,0 +1,67 @@
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+//globals
+int bits = 32;
+bool raw = false;
+
+void print_help(char *name){
+ printf("Usage: %s [OPTION]... NUMBER...\n", name);
+ printf("Convert NUMBER(S) to binary\n\n");
+
+ printf("Options:\n");
+ printf(" -b, --bits\tSpecify number of bits to print (default is 32)\n");
+ printf(" -h, --help\tPrint this help message and exit\n");
+ printf(" --raw \tPrint only the binary form\n");
+}
+
+char *to_bin(int n, int bits){
+ char *out = malloc(sizeof(char) * (bits+1));
+ int i;
+
+ out[bits] = '\0';
+
+ for(i = bits-1; i >= 0; --i){
+ out[i] = (n & 1 ? '1' : '0');
+ n /= 2;
+ }
+
+ return out;
+}
+
+
+
+int main(int argc, char **argv){
+ int i;
+
+ //print help if no arguments
+ if(argc < 2){
+ print_help(argv[0]);
+ return 0;
+ }
+
+ //check for arguments
+ for(i = 1; i < argc; ++i){
+ if(!(strcmp(argv[i], "--"))){
+ ++i;
+ break;
+ }
+ else if(!(strcmp(argv[i], "-b")) || !(strcmp(argv[i], "--bits"))){
+ if(i+1 >= argc) break; //check that the flag was given an argument
+ bits = atoi(argv[i+1]);
+ ++i;
+ }
+ else if(!(strcmp(argv[i], "-h")) || !(strcmp(argv[i], "--help"))) print_help(argv[0]);
+ else if(!(strcmp(argv[i], "--raw"))) raw = true;
+ else break;
+ }
+
+ //convert each argument to binary
+ while(i < argc){
+ if(!raw) printf("%d -> ", atoi(argv[i]));
+ printf("%s\n", to_bin(atoi(argv[i]), bits));
+ ++i;
+ }
+}