如何在c中打印带符号的hex

我知道我们可以使用printf(“%04X”,value); 打印无符号hex值

c中是否有类似的标志或函数可用于打印带符号的hex值?

像这样的东西

BINARY HEX(SIGNED) HEX (UNSIGNED) -------- ----------- -------------- 00000010 +0x2 0x2 00000001 +0x1 0x1 00000000 +0x0 0x0 11111111 -0x1 0xFF 11111110 -0x2 0xFE 11111101 -0x3 0xFD 

不幸的是,C的printf函数无法直接执行此操作。 你当然可以尝试:

 printf("%s%x\n", x<0?"-":"", x<0?-(unsigned)x:x); 

编辑 :我相信我修复了处理INT_MIN的问题......

不,但你可以做点什么

 printf("%c%04X",(x<0)?'-':' ',(x<0)?-x:x); 

但是,正如其他人指出的那样,是否有正当理由这样做是值得怀疑的。 一定要明白你要求的确切内容。

编辑 :根据你的post的编辑,你明白你要求的是什么,所以这都是你的错;-)

“符号”hex值是什么意思? 你想要像“ -e0 ”这样的东西吗? 如果是这样,那意味着什么? 该符号已经在hex显示中表示,因为它显示了所有位,这是数字中的所有信息。