如何将 6 个整数的数组转换为单个整数。下面提供了我想要做的示例。
大批:{0, 1, 2, 3, 4, 5, 6}
整数: 123456
谢谢!
尝试这个:
int i, k = 0;
for (i = 0; i < n; i++)
k = 10 * k + a[i];
其中n
是数组的长度。但是,当数组足够短时,这是正确的,否则您会出现int
溢出。
这是我制作的一个功能
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
也许将数组值转换为字符串,然后在必要时转换为 Int?当然,如前所述,要注意限制。
请注意,整数值的范围是:–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;
}
#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);
}
试试这个:
#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;
}
int k = 0;
for (int i = A.length; i > 0; i--){
k += 10 * i * A[A.length - i];
}
为什么不将 int[] 中的每个项目都转换为字符串,然后将字符串相加,然后再将其转换回整数
#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);
}