我正在尝试在 C 中将十六进制数字打印为十进制。
int main()
{
unsigned long hex = 0xb5389e0c721a;
printf("hex in dec: %lu", hex);
getch();
return 0;
}
由此,我的输出是 2651615770。但是,当我使用在线十六进制到十进制转换器和 Windows 计算器时,假定的输出应该是 199254774411802。我做错了什么?
最佳答案
我认为您的2651615770
输出是由于溢出造成的。这是因为 32 位 unsigned long hex
无法容纳这么大的数字(0xb5389e0c721a
),所以它需要更大的数据类型。
尝试以下更改-
int main()
{
unsigned long long hex = 0xb5389e0c721a; // declare hex as unsigned long long
printf("hex in dec: %llu", hex);
getch();
return 0;
}
关于c - 在 C 中将十六进制数打印为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24971587/