gpt4 book ai didi

c - 在字符表示中打印特定的十六进制值

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:53 26 4
gpt4 key购买 nike

当尝试在字符串中使用 '\x05' 时,编译后的 C 代码在处理该值时似乎表现得很奇怪。

例如当使用以下字符串时:

char *weird = "\x04\x68\x65\x79\x79\x03\x6e\x65\x74\x05\x6c\x6f\x63\x61\x6c\x00";

打印字符串的每个字符时,'\x05'对应的不是整数5,而'\x04''\x03'分别对应整数4和3。

下面的 for 循环演示了这个问题:

for(int i = 0; i < strlen(question); i++){
printf("question[%d] = %c\n", i, question[i]);
}

输出:

0x05

知道为什么 '\x05' 的这种特殊情况如此麻烦吗?

最佳答案

%c 格式说明符用于作为参数提供的相应整数值的可打印字符表示。根据 ASCII 编码,0x030x040x05 都不是可打印值!!

为了确认,您可以将相同的值传递给 isprint() 在尝试打印之前。如果您选择打印它,“显示”最终取决于您的终端选择如何解释显示。

这里有一些引用资料(12)列出了可打印和不可打印的 ASCII 值

关于c - 在字符表示中打印特定的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48551591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com