gpt4 book ai didi

c - 在 C 中存储字符的十六进制等效值

转载 作者:行者123 更新时间:2023-11-30 15:58:19 26 4
gpt4 key购买 nike

引用问题的第二个答案: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 ?

}

谢谢。

最佳答案

您可以使用 for loop迭代字符串的所有字符,然后对每个字符应用转换。请记住,C 字符串是 null-terminated .

另请注意,如果您想存储 \x61\x62\x63\x64,4 个字符是不够的。 - 你需要4 * strlen(str) + 1 ,即 17。

<小时/>

响应代码:

你实际上并不需要chfunction charToHex 返回void ,即什么都没有。

只需将字符复制到输出字符串,如下所示:

str2[2*i] = hex[0];
str2[2*i+1] = hex[1];

再次强调,不要忘记在结果字符串中设置空终止符。

另外,既然你调用strlen在每次迭代中,您都在编写 Schlemiel the Painter algorithm .

关于c - 在 C 中存储字符的十六进制等效值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9857419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com