参考问题的第二个答案:How to convert from ASCII to Hex and vice versa?
我想保存char hex [3]相当于不同的字符,如下所示:
char *str ="abcd";
// I want to get hex[3] of each character in above string and save into the following:
char str2[4]; // should contain hex values as : \x61 for a,\x62 for b,\x63 for c,\x64 for d
我该怎么做?
到目前为止,我尝试了以下内容:
int i;
char ch;
char hex[3];
for(i=0; i<strlen(str);i++) {
ch = charToHex(*(str+i), hex);
// now hex contains the first and second hex characters in hex[0] & hex[1]
// I need to save them in the first index of str2
// e.g. if hex[0] = 7 and hex[1] = f, then str2[0] should be "\x7f"
// -> how do I do this part ?
}
感谢。
答案 0 :(得分:1)
您可以使用for
loop迭代字符串的所有字符,然后为每个字符应用转换。请记住,C字符串是null-terminated。
另请注意,如果您想要存储\x61\x62\x63\x64
,则4个字符是不够的 - 您需要4 * strlen(str) + 1
,即17。
回应代码:
您实际上并不需要ch
。 function charToHex
返回void
,即没有。
只需将字符复制到输出字符串,如下所示:
str2[2*i] = hex[0];
str2[2*i+1] = hex[1];
同样,不要忘记在结果字符串中设置null终止符。
此外,由于您在每次迭代中都致电strlen
,因此您正在撰写Schlemiel the Painter algorithm。