में कनवर्ट करें मैं हेक्साडेसिमल में एएससीआईआई में char [] में एक char [] को परिवर्तित करने की कोशिश कर रहा हूं।एसीआई चार [] से हेक्साडेसिमल चार [] में सी
कुछ इस तरह:
हैलो -> 68656C6C6F
मैं कुंजीपटल द्वारा स्ट्रिंग पढ़ना चाहते हैं। यह 16 वर्ण लंबा होना चाहिए।
यह मेरा कोड है अब। मुझे नहीं पता कि ऑपरेशन कैसे करें। मैं strol के बारे में पढ़ा है, लेकिन मैं यह सिर्फ हेक्स int करने के लिए str संख्या परिवर्तित लगता है ...
#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]);
}
}
मैं fgets उपयोग कर रहा हूँ क्योंकि मैंने पढ़ा fgets की तुलना में बेहतर है, लेकिन यदि आवश्यक हो तो मैं इसे बदल सकते हैं।
इससे संबंधित, मैं एक uint8_t सरणी में पढ़ने वाली स्ट्रिंग को कन्वर्ट करने की कोशिश कर रहा हूं, हेक्स संख्या प्राप्त करने के लिए प्रत्येक 2 बाइट्स में शामिल हो रहा हूं।
मेरे पास यह फ़ंक्शन है जिसे मैं Arduino में बहुत उपयोग कर रहा हूं, इसलिए मुझे लगता है कि इसे बिना किसी समस्या के सामान्य सी प्रोग्राम में काम करना चाहिए।
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;
}
लेकिन, जब भी मैं अपने कोड में है कि फ़ंक्शन को कॉल करें, मैं एक विभाजन गलती मिलता है।
पहले उत्तर के कोड के लिए इस कोड जोड़ना:
uint8_t* out;
hex_decode(key_DM, sizeof(out_key), out);
मैं सभी आवश्यक पैरामीटर भेजने और मैं क्या जरूरत है सरणी बाहर में पाने की कोशिश की लेकिन यह विफल रहता है ...
'uint8_t * बाहर;' -> 'uint8_t * बाहर = calloc (sizeof (out_key), sizeof (* बाहर));' या 'sizeof (out_key) 'के बजाय' strlen (key_DM) + 1'। – BLUEPIXY