我知道我们可以使用printf(“%04X”,value);打印无符号十六进制值
c中是否有类似的标志或函数可用于打印带符号的十六进制值?
像这样的类似的东西BINARY HEX(SIGNED) HEX (UNSIGNED)
-------- ----------- --------------
00000010 +0x2 0x2
00000001 +0x1 0x1
00000000 +0x0 0x0
11111111 -0x1 0xFF
11111110 -0x2 0xFE
11111101 -0x3 0xFD
答案 0 :(得分:10)
不幸的是,C printf
函数无法直接执行此操作。你当然可以尝试:
printf("%s%x\n", x<0?"-":"", x<0?-(unsigned)x:x);
修改:我相信我修复了处理INT_MIN
的问题......
答案 1 :(得分:3)
不,但你可以做类似
的事情printf("%c%04X",(x<0)?'-':' ',(x<0)?-x:x);
但是,正如其他人指出的那样,是否有正当理由这样做是值得怀疑的。请务必准确了解您所要求的内容。
编辑:根据你的帖子的编辑,你明白你要求的是什么,所以这都是你的错; - )
答案 2 :(得分:1)
这是一个更简单的版本:
#include <stdio.h>
#include <stdib.h>
...
printf("%c%#x\n", "+-"[x < 0], (unsigned)abs(x));
答案 3 :(得分:0)
“签名”十六进制值是什么意思?你想要“-e0
”之类的东西吗?如果是这样,那意味着什么?该符号已经在十六进制显示中表示,因为它显示了所有位,这是数字中的所有信息。