首页 > 解决方案 > 字符数组中的十六进制

问题描述

如果以下是一个字节数组:

char arr[] = "\xFF";

如果我们执行以下操作:

char arr[] = "\xFFmyrandomstringappendedafterbyte";

打印它会导致:

byteValueGoesHEREmyrandomstringappendedafterbyte

但是,如果我尝试执行以下操作:

char arr[] = "\xFF98";

这将导致警告:

warning: hex escape sequence out of range

它被视为98十六进制代码的一部分。但是,我希望它被视为一个字符串(原样myrandomstringappendedafterbyte)。

我想把它作为输出byteValueGoesHERE98

没有空格如何实现?我如何表示 98 应该被视为一个字符串?

标签: c

解决方案


当字符串文字之间只有空格(或没有空格)时,预处理器会将它们组合成单个字符串文字,但这不会“合并”转义序列。因此,您可以使用两个字符串编写所需的字符串:

char arr[] = "\xFF" "98";

这是包括终止符在内的四个字节'\0'


推荐阅读