在C预处理器

时间:2015-09-24 07:37:24

标签: c macros c-preprocessor variadic variadic-macros

如何将16位数字列表转换为十六进制字符串,如"\x0f\x56\x44\xe0"

这些16位值如何显示?它们也是宏观扩张的结果#define make_word(arg1, arg2) arg1 << 16 + arg2。所以完整的调用应该是这样的: some_function(MAKE_HEX_STR(make_word(1, 2), make_word(3, 4), make_word(5, 6)); 并应扩展到: some_function("\x01\x02\x03\x04\x05\x06);

2 个答案:

答案 0 :(得分:1)

我不知道你的问题背后有什么任务,但以下内容可能有所帮助(需要C99或更近期):

end output

live on ideone。如果你真的不需要它是一个字符串,你可以省略0终止符。

答案 1 :(得分:0)

您可以尝试使用strtol并将基数指定为16。

或者您可以尝试这样:

int x = yourNumber;
char result[5]; 
if (x <= 0xFFFF)
{
    sprintf(&result[0], "%04x", x);
}