Ответ 1
К сожалению, функция C printf
не имеет возможности сделать это напрямую. Вы могли бы, конечно, попробовать:
printf("%s%x\n", x<0?"-":"", x<0?-(unsigned)x:x);
Изменить. Я считаю, что я исправил проблему обработки INT_MIN
...
Я знаю, что мы можем использовать printf ( "% 04X", значение); для печати шестнадцатеричных значений без знака
Есть ли аналогичный флаг или функция из c, которую вы можете использовать для печати подписанных шестнадцатеричных значений?
нечто похожее на это
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);
Но, как следует из других соображений, сомнительно, есть ли веские основания для этого. Не забудьте понять, что именно вы просите.
РЕДАКТИРОВАТЬ: согласно редактированию на ваш пост, вы понимаете, о чем вы просите, так что это ваша вина; -)
Что вы подразумеваете под "подписанным" шестнадцатеричным значением? Вы хотите что-то вроде "-e0
"? Если да, то что бы это значило? Знак уже представлен в шестнадцатеричном отображении, так как он отображает все биты и всю информацию, содержащуюся в номере.