gpt4 book ai didi

c - 为什么 printf() 在实际数据之前打印 ffffff? C

转载 作者:行者123 更新时间:2023-11-30 18:38:46 31 4
gpt4 key购买 nike

printf() 函数打印前导 ffffff (从技术上讲,我理解最高有效位带有符号,因此它会一直传送到数据开始的位置)。但我不知道如何摆脱它们,为什么会发生这种情况?

int mem_display(Cmd *cp, char *arguments)
{
int i;
char *adr;
if (!sscanf(arguments,"%x",&adr))
{
return 0;
}
printf("%#0.8s ",arguments);

for (i=0; i<16; i++) {
printf("%02.x ",(unsigned int)*(adr+i));
}
...

输出:

 % UNIX> md 10668 
/*calling function show memory location 0x10668*/
OUT:
10668 ffffffbc 10 20 ffffffe0 ffffffa0 40 ffffffa2 ffffffa0 44 ffffff9c 23 ffffffa0 20

已解决:

printf("%0.2x ",(unsigned int)*(adr+i));

输出:

UNIX> md 10000
10000 7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00 .ELF............

最佳答案

转换为unsigned char,让系统将*(adr+i)视为无符号,这样就不会进行符号扩展。

for (i=0; i<16; i++) {
printf("%02.x ",(unsigned char)*(adr+i));
}

关于c - 为什么 printf() 在实际数据之前打印 ffffff? C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32685952/

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