首页 > 解决方案 > 在 C 中打印最后 5 位数字(八进制)

问题描述

我想知道如何在 C 编程语言中只打印八进制数的最后 5 位数字?

棘手的部分:这个数字在定义中是无符号的,所以经过一些程序后它会输出类似 3777777464 的东西。我想打印的只是 77464。

我试图在 C 格式指南中四处查看,但我只发现了如何编写前 5 个数字/字符,而不是关于提到的棘手部分的最后 5 个数字/字符。

它只需要显示在输出中(文件中的 printf/fprintf)。

编辑并强调:代码太长,无法在此处发布,它由许多 c 文件和头文件组成。为了简洁:我需要 printf("%05o\n",arr[i]); 仅打印最后 5 位数字。它打印出类似 3777777464 的东西。数字是正确的,我只需要最后 5 位数字

非常感谢你帮助我

标签: cprintfoctal

解决方案


仅打印数字的最后 5 位(八进制)数字

通过与 077777 的掩码进行与运算导出最后 5 个八进制数字。

#define MASK_LAST_5_OCTAL_DIGITS 077777u

//       vv print at least 5 characters, pad with 0 as needed 
printf("%05o\n", (unsigned) (number & MASK_LAST_5_OCTAL_DIGITS));

推荐阅读