c - 字符数组中的十六进制
问题描述
如果以下是一个字节数组:
char arr[] = "\xFF";
如果我们执行以下操作:
char arr[] = "\xFFmyrandomstringappendedafterbyte";
打印它会导致:
byteValueGoesHEREmyrandomstringappendedafterbyte
但是,如果我尝试执行以下操作:
char arr[] = "\xFF98";
这将导致警告:
warning: hex escape sequence out of range
它被视为98
十六进制代码的一部分。但是,我希望它被视为一个字符串(原样myrandomstringappendedafterbyte
)。
我想把它作为输出byteValueGoesHERE98
。
没有空格如何实现?我如何表示 98 应该被视为一个字符串?
解决方案
当字符串文字之间只有空格(或没有空格)时,预处理器会将它们组合成单个字符串文字,但这不会“合并”转义序列。因此,您可以使用两个字符串编写所需的字符串:
char arr[] = "\xFF" "98";
这是包括终止符在内的四个字节'\0'
。
推荐阅读
- objective-c - Objective-C:线程 1:encodeWithCoder 中的 EXC_BAD_INSTRUCTION 错误
- c# - 有没有办法将表单的提交按钮放在另一个视图中?
- vue.js - 如何在 VSCode vetur Vue 项目中禁用“vue/custom-event-name-casing”错误?
- oracle - oracle 无法创建 AWR 报告
- c - if 或 in 汇编怎么做?
- javascript - 如何根据vue js中两个数字的范围获取值
- sql - 如何根据属性表填充布尔列?
- ssas - 在 MDX 中添加调试列/行
- python-3.x - 如何只保留每组熊猫数据帧中累积 80% 列的行?
- r - 如何在 R 中编写分段函数的分布?