我想将十六进制的int值打印为%d。
当值写为十六进制时,这不是问题:
#include <stdio.h>
int main(void) {
int x=0x18;
int y=0xAB;
printf("%d %d", x, y );
return 0;
}
但是......如果这是十进制值,我怎么打印?
我想要这样的事情:
x = 551更改为十六进制x = 227并打印为%d?
在本练习中,我必须将十六进制整数打印为%d。
希望我写得这么干净。 :)
此致
答案 0 :(得分:0)
奇数请求:使用@Html.DisplayFor(item => ((Inq_DetailsBase)Model))
打印十进制值。
"%x"
输出:
void dec_print_with_x(unsigned x) {
if (x >= 10) dec_print_with_x(x/10);
printf("%x", x%10);
}
int main ( void )
{
dec_print_with_x(0x227);
return 0;
}
要清楚,551
或x
之类的变量int x = 0x227;
既不是十进制,十六进制也不是二进制。它有一个整数值以某种方式编码并存储在某处 - 很可能是2's complement中固定宽度的位模式。
int x = 551;
,0x18
0xAB
是 text ,它是源代码的一部分,0x227
是输出的一部分。这些字符序列表示十六进制或十进制表示的值。
答案 1 :(得分:0)
如果你这样做:
int x = 898;
x = 0x382;
printf(" x = %d", x);
输出将是:
x = 898
在您的代码中,898
和0x382
是表示相同数字的两种不同方式。它们以完全相同的方式存储。
如果您使用printf
或十六进制格式%d
,那么%x
所做的是采用该数字的内部表示并以十进制格式打印。你如何完成任务并不重要。
另一种看待它的方式 - 这段代码:
int x = 898;
int y = 0x382;
if (x == y) {
printf("x and y are equal\n");
} else {
printf("x and y are not equal\n");
}
输出:
x and y are equal