10

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

大批:{0, 1, 2, 3, 4, 5, 6}

整数: 123456

谢谢!

4

9 回答 9

17

尝试这个:

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

其中n是数组的长度。但是,当数组足够短时,这是正确的,否则您会出现int溢出。

于 2013-10-25T21:05:37.210 回答
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;
} 

wherestr[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

于 2015-09-23T05:38:59.960 回答
0

也许将数组值转换为字符串,然后在必要时转换为 Int?当然,如前所述,要注意限制。

于 2013-10-25T22:05:19.863 回答
0

请注意,整数值的范围是:–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;
}
于 2013-10-25T21:41:55.780 回答
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);

}
于 2013-10-25T21:16:44.820 回答
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;
}
于 2019-05-29T11:22:01.550 回答
0
int k = 0;
for (int i = A.length; i > 0; i--){
    k += 10 * i * A[A.length - i];
}
于 2018-12-29T22:58:27.067 回答
0

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

于 2020-09-22T03:02:47.340 回答
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);
    }
于 2018-08-01T06:31:03.787 回答