ic, basic binary to hex using nibbles
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
take input
|
||||
decide if hex or binary
|
||||
then convert
|
||||
then print
|
||||
|
||||
let's convert binary to hex first
|
||||
for each byte, split into nibble,
|
||||
|
||||
*/
|
||||
|
||||
|
||||
//might have to add some padding, but basic works
|
||||
void bintohex(char* string_in){
|
||||
const char hexmap[] = "0123456789ABCDEF";
|
||||
char hexnum[4];
|
||||
int stringl = strnlen(string_in, 10)-1;
|
||||
//aantal nibbles
|
||||
int loopamount = stringl/4;
|
||||
printf("totalstringlength=%d\n", stringl);
|
||||
for (int loopcount = 0; loopcount < loopamount; loopcount++) {
|
||||
int bin2dec = 0;
|
||||
//rechts naar links in nibble
|
||||
for (int nibbledigit = 0 ; nibbledigit <4 ; nibbledigit++) {
|
||||
//nibblecount + current
|
||||
int targetdigit = loopcount*4+(4-1-nibbledigit);
|
||||
//check if j+i = 1
|
||||
//printf("nibbledigit:%d=%c=%i\n", j, string_in[targetdigit],1<<j);
|
||||
bin2dec += 1 * (string_in[targetdigit]-'0')*1<<(nibbledigit);
|
||||
}
|
||||
hexnum[loopcount]=hexmap[bin2dec];
|
||||
printf("nibble:%i=%d\n",loopcount,bin2dec);
|
||||
}
|
||||
printf("hex=%s", hexnum);
|
||||
}
|
||||
|
||||
int main(){
|
||||
printf("input either binary or hexadecimal\n");
|
||||
char buff[32+2]; //4bytes+\n+null
|
||||
fgets(buff, sizeof(buff), stdin);
|
||||
bintohex(buff);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
[
|
||||
{
|
||||
"file": "kvparser.c",
|
||||
"arguments": [
|
||||
"/usr/bin/gcc",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-g",
|
||||
"-c",
|
||||
"kvparser.c",
|
||||
"-o",
|
||||
"build/kvparser.o"
|
||||
],
|
||||
"directory": "/home/lyr41n/mycode/ler/exc/qscr/c/files/parser/kvparser",
|
||||
"output": "build/kvparser.o"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user