我正在寫一個十六進制到的base64編碼器作爲一個練習,因爲我是新來的C.沒關係爲什麼代碼不工作,我希望它的樣子,爲什麼我得到這些克拉字母連擊未來到我的輸出?C爲什麼輸出這些克拉?
const char * hex_to_base64(const char * s) {
int i;
for(i = 0; i < strlen(s)/3; i = i + 3) {
char str[3];
str[0] = s[i];
str[1] = s[i+1];
str[2] = s[i+2];
printf("%s\n", str);
}
return NULL;
}
int main() {
const char * x = "4453def6d206b696c6c696e6720796f757220627261696e206c696b652061222226f789436f6e6f5573206dabb7368726fa4b2";
hex_to_base64(x);
return 0;
}
而且我得到這樣的輸出:
445
3de^C
f6d^F
206
b69^L
6c6^O
c69^R
6e6^U
720^X
796^[
f75^^
722!
有人能解釋爲什麼我在printf的結束得到克拉字母連擊?
這些必須是控制字符的十六進制代碼。 – squiguy
我認爲你的循環在任何情況下都是有缺陷的。如果's'長度爲30個字符,'i'從'0'到'3'到'6'到'9'到'12',循環結束。 –