Comment convertir un tableau d'entiers en un entier en C?
Comment puis-je convertir un tableau de 6 entiers en un seul entier. Exemple fourni ci-dessous de ce que je veux faire.
Tableau: {0, 1, 2, 3, 4, 5, 6}
Entier: 123456
Merci!
Avez-vous conscience que ce ne sera pas possible si les 6 nombres entiers dans le tableau sont trop gros?
Qu'avez-vous essayé? Aussi, si vous êtes loin, vous verrez que le zéro va disparaître: dans votre exemple, par exemple, l'entier sera
Oui, en supposant qu'ils ne sont pas trop gros.
Donc vous voulez dire un tableau de chiffres? Permettez-moi de vous le dire, comment le système décimal travaux:
Méfiez-vous de dépassement de capacité arithmétique.
Qu'avez-vous essayé? Aussi, si vous êtes loin, vous verrez que le zéro va disparaître: dans votre exemple, par exemple, l'entier sera
123456
. Cela arrive pour une bonne raison et ne doit pas vous alarmer.Oui, en supposant qu'ils ne sont pas trop gros.
Donc vous voulez dire un tableau de chiffres? Permettez-moi de vous le dire, comment le système décimal travaux:
Value=digit(n)+10*digit(n-1)+100*digit(n-2)+...+10^n*digit(0)
Méfiez-vous de dépassement de capacité arithmétique.
OriginalL'auteur Rob Johnson | 2013-10-25
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
où
n
est la longueur du tableau. Ce qui est vrai, cependant, lorsque le tableau est assez courte, sinon vous obtiendrez uneint
débordement.int a[]={1,3,5,234,1,5,3};
Limites n'ont pas été mentionnés, mais peut-être un problème 🙂OriginalL'auteur sve
Voici une fonction que j'ai faite
où
str[6][3]
signifie qu'il y a6
éléments que peut contenir2
chiffres, le modifier pour l'adapter à vos besoins mieux. Aussin
est la taille du tableau que vous mettez dans la fonction.L'utiliser comme ceci:
real_num
sera désormais132064355
OriginalL'auteur Zeldamaster7778
une autre version
OriginalL'auteur Vorsprung
Être conscient que la plage de valeurs entières sont: -2 147 483 648 à de 2 147 483 647.
Une liste de nombres dans un tableau (comme ce que vous décrivez) auront besoin de quelque chose plus grand qu'un int pour conserver les valeurs pour lesquelles le nombre de chiffres représentant la valeur est supérieure à 10, puis, le premier chiffre ne peut être inférieur ou égal à 2, et ainsi de suite... (si vous voulez plus de chiffres, utilisez
__int64
)Cela retourne un entier composé des éléments d'un tableau int...
(remarque, des choses comme des valeurs négatives ne sont pas pris en compte ici)
if (i==0)
n'est pas nécessaire, puisque b commence à 0 et ainsi de10*b
est aussi 0. Le plus important: vous ne pouvez pas utilisersizeof
sur un pointeur sur le tableau. Heureusement, il ajoute juste du code mort.OriginalL'auteur ryyker
Peut-être convertir les valeurs de tableau dans une chaîne, puis cast en Int lorsque cela est nécessaire? Bien sûr, en étant conscient des limites, comme déjà mentionné.
OriginalL'auteur MacNick
sizeof(buffer)/sizeof(char)
Il est inutile de diviser commesizeof(char)
est toujours 1. Si ce n'était pas le cas, la division serait tout simplement faux. Vous utilisez le code dupliqué, ce qui n'est même pas identique pour la même tâche. Pourquoi ne pas simplement appelerarr2str
de l'intérieurarr2int
? Ou mieux, passez à l'étape à l'aide d'une chaîne lorsque vous avez seulement besoin de la valeur de l'entier.OriginalL'auteur clody
OriginalL'auteur Ben Beizer