如何将整数数组转换为八进制数?

问题描述 投票:0回答:1

我有一个像这样的数组: 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;
}
c decimal octal
1个回答
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
只是一个数字。当您打印它时,它会在您指示“打印方法”执行的任何系统中打印。因此,您的代码以十进制计算并以八进制打印。

© www.soinside.com 2019 - 2024. All rights reserved.