在十六进制字符数组中写入 00

Writing 00 in hex char array

我必须以十六进制格式向某些设备发送命令。

我已成功发送 "\xAA\xBB\xCC\xDD\xEE""\xAA\xBB\xCC%c\xEE" 以及 %c 包含特定十进制值的十六进制命令。

但我无法发送 00 值,例如 "\xAA\xBB\xCC0x00\xEE"

我看过很多关于这个的话题,但没有一个解决方案符合我的需要。我尝试了不同的东西,比如:

sprintf(char_array, "\xAA\xBB\xCC%d%d\xEE", 0,0);   
sprintf(char_array, "\xAA\xBB\xCC0x00\xEE");

但我找不到正确的解决方案。如果我理解正确,00 表示我的 char 数组的末尾,我需要执行转义序列以将十六进制值插入我的数组。

总结:我可以发送任何十六进制命令,除非它们包含 00

正如@MikeCAT 和@Remy Lebeau 所说:sprintf(char_array, "\xAA\xBB\xCC%c\xEE", '0'); 工作。 问题是稍后在我的代码中我有一个 strlen(char_array) 返回:

6 表示 sprintf(char_array, "\xAA\xBB\xCC\xDD\xEE", 22);

4 代表 sprintf(char_array, "\xAA\xBB\xCC%c\xEE", 0);

所以现在我将大小固定为 6。 感谢您的帮助。