我有一个像这样的数组: int arr[8] = {6, 4, 1, 6, 1, 1, 5, 6}。 如何将此数组转换为八进制数 64161156。 我使用这段代码,但它的结果是 364602604,364602604 是十进制数 64161156 表示为八进制。
#include <stdio.h>
int main() {
int a[8] = {6, 4, 1, 6, 1, 1, 5, 6};
int octal = 0;
for(int i = 0; i < 8; i++)
octal = octal * 10 + a[i];
printf("%o\n", octal);
return 0;
}
一个好主意是在开始编程之前组织好数学部分。
你想做的事情的想法是:
结果 = a[7] + 8*a[6] + 8*8*a[5] + ... + 8*8*8*8*8*8*8*a[0]。
(抱歉,我不知道如何在这里写数学)
您的代码的作用是:
结果 = a[7] + 10*a[6] + 10*10*a[5] + ... + 10*10*10*10*10*10*10*a[0]。
正如 @Weather Vane 指出的那样,在内部
int octal
只是一个数字。当您打印它时,它会在您指示“打印方法”执行的任何系统中打印。因此,您的代码以十进制计算并以八进制打印。