如何将整数数组转换为C中的整数?

时间:2013-10-25 21:01:18

标签: c arrays

如何将6个整数的数组转换为单个整数。下面提供了我想要做的事情。

数组:{0, 1, 2, 3, 4, 5, 6}

整数:123456

谢谢!

9 个答案:

答案 0 :(得分:11)

试试这个:

int i, k = 0;
for (i = 0; i < n; i++)
    k = 10 * k + a[i];

其中n是数组的长度。但是,如果数组足够短,则会出现int溢出。

答案 1 :(得分:1)

这是我做的一个功能

int array_to_num(int arr[],int n){
    char str[6][3];
    int i;
    char number[13] = {'\n'};

    for(i=0;i<n;i++) sprintf(str[i],"%d",arr[i]);
    for(i=0;i<n;i++)strcat(number,str[i]);

    i = atoi(number);
    return i;
} 

其中str[6][3]表示有6个元素可以保存2个数字,更改它以更好地满足您的需求。此外,n是您放入函数的数组的大小。 像这样使用它:

int num[6] = {13,20,6,4,3,55};
int real_num;
real_num = array_to_num(num,6);

real_num现在为132064355

答案 2 :(得分:0)

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char ** argv){
    int n;
    char buff[100];

    sprintf(buff,"%d%d%d%d%d%d%d", 0, 1,2, 3, 4, 5, 6);
    n = atoi(buff);

    printf("the number is %d",n);

}

另一个版本

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char ** argv){
    int n;
    int i;
    char buff[100];
    int x[]={0,1,2,3,4,5,6};
    for (i=0; i<7; i++) {
        sprintf(&buff[i],"%d",x[i]);
    }
    n = atoi(buff);

    printf("the number is %d",n);

}

答案 3 :(得分:0)

请注意 range of integer values 为:-2,147,483,648至2,147,483,647。
数组中的任何数字列表(例如您所描述的)都需要比int大的值来保存表示该值的数字大于10的值,然后,第一个数字只能是2或者更少,等等...(如果你想要更多数字,请使用__int64

这将返回一个由int数组元素组成的整数...

(注意,这里不考虑负值之类的事情)

#include <ansi_c.h>
int ConcatInts(int *a, int numInts);
int main(void)
{
    int a;
    int m[]={1,2,3,4,5,6,7,8,9};
    int size = sizeof(m)/sizeof(m[0]);

    a = ConcatInts(m, size); //a = 123456789

    return 0;   
}

int ConcatInts(int *a, int numInts)
{
    int i=0, size;
    int b=0;
    int mult = 1;
    size = sizeof(a)/sizeof(a[0]);
    for(i=0;i<numInts;i++)
    {
        if((a[i] < 0) ||(a[i]>9)) return -1;
        if(i==0)
        {
            b += a[i];
        }
        else
        {
            b *= 10;
            b += a[i];
        }
    }
    return b;
}

答案 4 :(得分:0)

也许将数组值转换为字符串,然后在必要时转换为Int?当然,正如已经提到的那样,意识到了限制。

答案 5 :(得分:0)

    #include <stdio.h>

    char* arr2str(int arr[], int size) {
        static char buffer[256];
        memset(&buffer[0], 0, sizeof(buffer)/sizeof(char));
        char *ptr = &buffer[0];
        for(int i=0; i<size; ++i) {
            sprintf(ptr += strlen(ptr), "%d", arr[i]);
        }
        return buffer;
    }

    int arr2int(int arr[], int size) {
        char buffer[256] = {0,};
        char *ptr = &buffer[0];
        for(int i = 0; i < size; ++i) {
            sprintf(ptr += strlen(ptr), "%d", arr[i]);
        }
        return atoi(&buffer[0]);
    }

    int main(int argc, const char * argv[]) {

        int arr[] = {1,2,3,4,5,6,7,8,9,0};
        int size = sizeof(arr) / sizeof(int);
        char *str = arr2str(arr, size);
        int num = arr2int(arr, size);
        printf("%s, %d", str, num);
    }

答案 6 :(得分:0)

int k = 0;
for (int i = A.length; i > 0; i--){
    k += 10 * i * A[A.length - i];
}

答案 7 :(得分:0)

尝试这个:

#include <stdio.h>
#include <math.h>

int main()
{
    int arr[] = {1, 2, 2, 43, 4, 27};
    int size = sizeof(arr)/sizeof(arr[0]);
    int n = 0;
    int number  = 0;
    int val  = 0;
    while(n <size)
    {
        val = arr[n];
        while(val!= 0)
        {
            val = val/10;
            number = number*10;
        }
        number = number + arr[n];
        n++;
    }
    printf("%d", number);
    return 0;
}

答案 8 :(得分:0)

为什么不将int []中的每个项目都转换为字符串,然后将字符串加在一起,然后再将其转换回整数