将十六进制字符串中的“0x”替换为C中的“\ x”

时间:2014-08-14 07:33:03

标签: c hex

我有一个C库,需要“\ xFF”形式的十六进制输入。我需要传递格式为“0xFF”形式的十六进制值数组。有没有办法在C?

中用“\ x”替换“0x”

2 个答案:

答案 0 :(得分:1)

这听起来像一个简单的字符串替换操作,但我认为这不是你真正需要的。

符号" \ xFF"在C字符串中表示"该字符串包含编码值为0xFF的字符,即255十进制"。

那么,如果这就是你的意思,那么你需要完成编译器的工作并替换传入的" 0xFF"具有代码0xFF的单个字符的文本。

这没有标准功能,因为它通常由编译器完成。

为了实现这一点,我会编写一个查找0x的循环,每次找到它时,使用strtoul()尝试转换该位置的数字。如果数字太长(即0xDEAD),你需要弄清楚如何处理它。

答案 1 :(得分:1)

您可以使用strstr查找子字符串"0x",然后将'0'替换为'\\'

#include <stdio.h>
#include <string.h>

int main(void)
{
    char s[] = "0x01,0x0a,0x0f";
    char *p = s;

    printf("%s\n", s);
    while (p) {
        p = strstr(p, "0x");
        if (p) *p = '\\';
    }
    printf("%s\n", s);
    return 0;
}

输出:

0x01,0x0a,0x0f
\x01,\x0a,\x0f

但正如@unwind和@Sathish指出的那样,这可能不是你所需要的。