C 以十进制打印十六进制数

C 以十进制打印十六进制数,c,linux,terminal,C,Linux,Terminal,我正在尝试在Linux中制作fdisk程序。我有一个包含分区磁盘信息的缓冲区(起始扇区-结束扇区-分区大小…等等) 问题是我有缓冲区数组char buf[512],缓冲区包含所需的信息,我想用十进制打印它。结果应该是2048年12月 这个程序可以看到每一个数字八零零,我希望它能看到八百 代码 这是十六进制800h,我需要它是十进制2048这与vi有什么关系?我使用vi{text editor}编写了这段代码。(另外,我想你忘了添加“鼠标”、“办公桌”、“工时”和“食物”标签)我不太明白,你使用

我正在尝试在Linux中制作fdisk程序。我有一个包含分区磁盘信息的缓冲区(起始扇区-结束扇区-分区大小…等等)

问题是我有缓冲区数组
char buf[512]
,缓冲区包含所需的信息,我想用十进制打印它。结果应该是2048年12月

这个程序可以看到每一个数字八零零,我希望它能看到八百


代码
这是十六进制800h,我需要它是十进制2048

这与
vi
有什么关系?我使用vi{text editor}编写了这段代码。(另外,我想你忘了添加“鼠标”、“办公桌”、“工时”和“食物”标签)我不太明白,你使用
'%x'
来输出,为什么不
%d
当我使用%d而不是%x时,我没有得到想要的十进制结果,但如果使用%x,我会得到与想要的数字对应的十六进制。-我的主要问题是在一个数字中合并多个数组元素以打印它。例如,需要合并x[1]=1和x[2]=2以在一个元素中打印它们以打印12个。非常感谢。这个简单的解决方案可行,但是我想要一个更简单的解决方案,但是没问题。
printf("Starting Sector:%lu\n",
         (unsigned long)buf[454] * 0x1000
       + (unsigned long)buf[455] * 0x100
       + (unsigned long)buf[456] * 0x10
       + (unsigned long)buf[457] * 0x1);
80
20
21
0
Partation ID:83
Starting Sector:0800
printf("Starting Sector:%lu\n",
         (unsigned long)buf[454] * 0x1000
       + (unsigned long)buf[455] * 0x100
       + (unsigned long)buf[456] * 0x10
       + (unsigned long)buf[457] * 0x1);