KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am trying to convert a char[] in ASCII to char[] in hexadecimal. Something like this: hello --> 68656C6C6F I want to read by keyboard the string. It has to be 16 characters long. This is my code now. I don't know how to do that operation. I read about strol but I think it just convert str number to int hex... #include <stdio.h> main() { int i = 0; char word[17]; printf("Intro word:"); fgets(word, 16, stdin); word[16] = '\0'; for(i = 0; i<16; i++){ printf("%c",word[i]); } } I am using fgets because I read is better than fgets but I can change it if necessary. Related to this, I am trying to convert the string read in a uint8_t array, joining each 2 bytes in one to get the hex number. I have this function which I am using a lot in arduino so I think it should work in a normal C program without problems. uint8_t* hex_decode(char *in, size_t len, uint8_t *out) { unsigned int i, t, hn, ln; for (t = 0,i = 0; i < len; i+=2,++t) { hn = in[i] > '9' ? (in[i]|32) - 'a' + 10 : in[i] - '0'; ln = in[i+1] > '9' ? (in[i+1]|32) - 'a' + 10 : in[i+1] - '0'; out[t] = (hn << 4 ) | ln; printf("%s",out[t]); } return out; } But, whenever I call that function in my code, I get a segmentation fault. Adding this code to the code of the first answer: uint8_t* out; hex_decode(key_DM, sizeof(out_key), out); I tried to pass all necessary parameters and get in out array what I need but it fails...
Tags (comma-separated)
Save Edits
Cancel