如何将6个整数的数组转换为单个整数。下面提供了我想要做的事情。
数组:{0, 1, 2, 3, 4, 5, 6}
整数:123456
谢谢!
答案 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 []中的每个项目都转换为字符串,然后将字符串加在一起,然后再将其转换回整数