Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
713 connectés 

  FORUM HardWare.fr
  Programmation
  C

  comment concaténer 2 entiers

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

comment concaténer 2 entiers

n°989090
boom
Posté le 21-02-2005 à 20:33:52  profilanswer
 

Voilà, j ai deux entiers non signés de 16 bits et j aimerais les mettre bout à bout, il doit surement y avoir une fonction qui fait cela, mais je ne la connais pas.
 
Merci
 
edit : double


Message édité par boom le 21-02-2005 à 22:17:01
mood
Publicité
Posté le 21-02-2005 à 20:33:52  profilanswer
 

n°989102
moi23372
Posté le 21-02-2005 à 20:37:15  profilanswer
 

boom a écrit :

Voilà, j ai deux entiers non signés de type double et j aimerais les mettre bout à bout, il doit surement y avoir une fonction qui fait cela, mais je ne la connais pas.
 
Merci


 

Code :
  1. void main()
  2. {
  3. double a;
  4. double b;
  5. double c;
  6. char nombre[100];
  7. char tmp[100];
  8. //initialisation
  9. sprintf(nombre,"%d",a);
  10. sprintf(tmp,"%d",b);
  11. strcat(a,b);
  12. }


 
si tu veux encore passé tout ça dans un double, cherche l'équivalent de char to int (atoi) en char to double...
 

n°989158
Emmanuel D​elahaye
C is a sharp tool
Posté le 21-02-2005 à 21:00:03  profilanswer
 

boom a écrit :

Voilà, j ai deux entiers non signés de type double et j aimerais les mettre bout à bout, il doit surement y avoir une fonction qui fait cela, mais je ne la connais pas.


Pour des valeurs numériques, ça n'a pas de sens. Si il s'agit de chaines de caractères représentants des nombres, il faut préciser le format (décimal, héxa, nb de 0 en tête etc.). Je pense que tu as un problème de conception...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°989178
boom
Posté le 21-02-2005 à 21:09:50  profilanswer
 

Emmanuel Delahaye a écrit :

Pour des valeurs numériques, ça n'a pas de sens. Si il s'agit de chaines de caractères représentants des nombres, il faut préciser le format (décimal, héxa, nb de 0 en tête etc.). Je pense que tu as un problème de conception...


 
Pourquoi ça na pas de sens ?
 
Bon, je ne suis pas un programmeur, mais là je dois modifier un truc déjà existant, j'avais essayé avec l'opérateur ##, mais ça ne marche pas.
 
Voici le bout de code :
 

Code :
  1. if ((jffs2sb_magic->magic ## jffs2sb_magic->nodetype) == 19852003) {
  2.  printk(KERN_NOTICE
  3.         "RAMDISK: jffs2 filesystem found at block %d\n",
  4.         start_block);
  5.  nblocks = (jffs2sb->flash_size+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
  6.  goto done;
  7. }

n°989195
Taz
bisounours-codeur
Posté le 21-02-2005 à 21:13:57  profilanswer
 

# sprintf(nombre,"%d",a);
# sprintf(tmp,"%d",b);
# strcat(a,b);
 
 
mouaahahahh

n°989274
printf
Baston !
Posté le 21-02-2005 à 21:58:30  profilanswer
 

Je pense que les opérateurs de multiplication et d'addition seront plus appropriés que l'utilisation du préprocesseur :D

n°989275
boom
Posté le 21-02-2005 à 21:59:47  profilanswer
 

Taz a écrit :

# sprintf(nombre,"%d",a);
# sprintf(tmp,"%d",b);
# strcat(a,b);
 
 
mouaahahahh


 
jusqu a maintenant il n  y a que lui qui ait répondu de manière constructive, bien que ce ne soit pas un code très beau.
 
Mais franchement, il existe pas une fonction qui lirait bit à bit ou octet à octet à une adresse pour la copier dans une zone mémoire, et répéter cette opération avec l autre variable.

n°989276
printf
Baston !
Posté le 21-02-2005 à 22:00:32  profilanswer
 

boom a écrit :

Voilà, j ai deux entiers non signés de type double et j aimerais les mettre bout à bout, il doit surement y avoir une fonction qui fait cela, mais je ne la connais pas.
 
Merci


 
Je ne crois pas.

n°989280
boom
Posté le 21-02-2005 à 22:03:15  profilanswer
 

printf a écrit :

Je ne crois pas.


 
cest quoi ça alors ?
 
__u16 magic;

n°989284
printf
Baston !
Posté le 21-02-2005 à 22:06:20  profilanswer
 

Mais c'est parce qu'il est magique que c'est un entier flottant [:ddr555]
 
Pour information, double est le type du langage C qui permet de représenter les nombres réels.
 
Ton truc c'est juste un entier non signé de 16 bits.


Message édité par printf le 21-02-2005 à 22:08:12
mood
Publicité
Posté le 21-02-2005 à 22:06:20  profilanswer
 

n°989286
chrisbk
-
Posté le 21-02-2005 à 22:09:14  profilanswer
 

moi23372 a écrit :

Code :
  1. void main()
  2. {
  3. double a;
  4. double b;
  5. double c;
  6. char nombre[100];
  7. char tmp[100];
  8. //initialisation
  9. sprintf(nombre,"%d",a);
  10. sprintf(tmp,"%d",b);
  11. strcat(a,b);
  12. }


 
 
si tu veux encore passé tout ça dans un double, cherche l'équivalent de char to int (atoi) en char to double...


 
j'aurais voulu faire plus compliqué et plus bugueux, j'aurais pas reussi


Message édité par chrisbk le 21-02-2005 à 22:09:34
n°989288
printf
Baston !
Posté le 21-02-2005 à 22:10:40  profilanswer
 

chrisbk a écrit :

j'aurais voulu faire plus compliqué et plus bugueux, j'aurais pas reussi


 
T'as même buggé ton reply mon salaud :o

n°989289
chrisbk
-
Posté le 21-02-2005 à 22:13:01  profilanswer
 

c'est son code satanique qui m'a dit de faire ca [:petrus75]

n°989292
FlorentG
Unité de Masse
Posté le 21-02-2005 à 22:14:46  profilanswer
 

Hum, pour les mettres bout à bout, faudrait pas genre récupérer le nombre de digit du premier, puis faire deuxième *  10^(nbr digit) + premier ?

n°989294
boom
Posté le 21-02-2005 à 22:15:57  profilanswer
 

printf a écrit :

Mais c'est parce qu'il est magique que c'est un entier flottant [:ddr555]
 
Pour information, double est le type du langage C qui permet de représenter les nombres réels.
 
Ton truc c'est juste un entier non signé de 16 bits.


 
ok merci, mes notions en C sont plutot vagues.  :)  
 
Mais sinon pour ma question ça ne mavance pas des masses

n°989298
boom
Posté le 21-02-2005 à 22:18:48  profilanswer
 

[citation=989292,0,14,208403]Hum, pour les mettres bout à bout, faudrait pas genre récupérer le nombre de digit du premier, puis faire deuxième *  10^(nbr digit) + premier ?[/citation]
 
 
Ah ouais, pas con !
 
j y avais pas du tout pensé, merci bien.  :)

n°989300
printf
Baston !
Posté le 21-02-2005 à 22:20:24  profilanswer
 

[citation=989292,0,14,208403]Hum, pour les mettres bout à bout, faudrait pas genre récupérer le nombre de digit du premier, puis faire deuxième *  10^(nbr digit) + premier ?[/citation]
 
Ouais.
Ou sinon il peut comparer individuellement les champs de la structure [:dawa]

n°989307
masklinn
í dag viðrar vel til loftárása
Posté le 21-02-2005 à 22:27:49  profilanswer
 

on peut utiliser les décalages aussi :o
 
genre uint32 = uint16_1 << 16 + uint16_2
 
non?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°989309
FlorentG
Unité de Masse
Posté le 21-02-2005 à 22:28:38  profilanswer
 

Ca risque pas de mettre des 0 entre les deux ?

n°989310
masklinn
í dag viðrar vel til loftárása
Posté le 21-02-2005 à 22:29:44  profilanswer
 

[citation=989309,0,19,208403]Ca risque pas de mettre des 0 entre les deux ?[/citation]
Uniquement ceux qui existaient déjà [:spamafote]  
 
Après c'est peut être pas ce qu'il veut, mais ça les met bout à bout :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°989313
FlorentG
Unité de Masse
Posté le 21-02-2005 à 22:32:26  profilanswer
 

Effectivement :)

n°989326
printf
Baston !
Posté le 21-02-2005 à 23:02:53  profilanswer
 

[citation=989307,0,18,144132]on peut utiliser les décalages aussi :o
 
genre uint32 = uint16_1 << 16 + uint16_2
 
non?[/citation]
 
Y'a rien qui te choque ? :D
 
(sans compter que les bases c'est comme les choux et les carottes, ça ne se mélange que dans une salade composée)


Message édité par printf le 21-02-2005 à 23:03:33
n°989330
chrisbk
-
Posté le 21-02-2005 à 23:16:02  profilanswer
 

0\/\/n3d By P41ntf

n°989331
masklinn
í dag viðrar vel til loftárása
Posté le 21-02-2005 à 23:16:11  profilanswer
 

[citation=989326,0,22,95059]Y'a rien qui te choque ? :D
 
(sans compter que les bases c'est comme les choux et les carottes, ça ne se mélange que dans une salade composée)[/citation]
ben non, on décale notre int16 de 16 bits [:spamafote]
Si tu décales de 15 bits tu va avoir un léger problème [:spamafote]  
(et je vois pas où on a un mélange de bases)


Message édité par masklinn le 21-02-2005 à 23:17:41

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°989332
chrisbk
-
Posté le 21-02-2005 à 23:16:53  profilanswer
 

autrement dit y'a pu rien dedans

n°989335
Taz
bisounours-codeur
Posté le 21-02-2005 à 23:18:41  profilanswer
 

ah bon ? et c'est quoi le type de '16' ?

n°989337
chrisbk
-
Posté le 21-02-2005 à 23:19:18  profilanswer
 

string [:god]

n°989338
masklinn
í dag viðrar vel til loftárása
Posté le 21-02-2005 à 23:19:22  profilanswer
 

[citation=989332,0,25,9187]autrement dit y'a pu rien dedans[/citation]
 [:gratgrat]  
 
Ah oui ptet ben qu'il faudrait commencer par le coller dans un int32 [:ddr555]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°989342
Taz
bisounours-codeur
Posté le 21-02-2005 à 23:22:14  profilanswer
 

[citation=989337,0,27,9187]string [:god][/citation]
nan sérieusement
 
(d'ailleurs ça eut plutôt été une caractère multioctets)


Message édité par Taz le 21-02-2005 à 23:22:45
n°989344
chrisbk
-
Posté le 21-02-2005 à 23:23:52  profilanswer
 

y se trouve que point ta question ne comprends
pour moins un uint_16 est codé sur 16bits [:petrus75]

n°989345
schnapsman​n
Zaford Beeblefect
Posté le 21-02-2005 à 23:23:55  profilanswer
 

[citation=989307,0,18,144132]on peut utiliser les décalages aussi :o
 
genre uint32 = (uint16_1 << 16 )+ uint16_2
 
non?[/citation]
[:maitre drasche]
mais c'est tjrs faux [:petrus75]


Message édité par schnapsmann le 21-02-2005 à 23:24:25
n°989346
chrisbk
-
Posté le 21-02-2005 à 23:24:53  profilanswer
 

[citation=989345,0,31,44667][:maitre drasche][/citation]
deja ca aide rien niveau taille du biniou, pis quitte  a bien faire on fait un '|' plutot qu'un '+', ca reflete mieux l'idée [:petrus75]

n°989347
Taz
bisounours-codeur
Posté le 21-02-2005 à 23:25:13  profilanswer
 

dans l'expression "uint16_1 << 16"
 
quel est le type de l'opérande droite 16 ?

n°989349
schnapsman​n
Zaford Beeblefect
Posté le 21-02-2005 à 23:27:12  profilanswer
 

[citation=989347,0,33,72553]
quel est le type de l'opérande droite 16 ?[/citation]
tu veux mon poing dans la gueule? [:petrus75]

n°989355
Taz
bisounours-codeur
Posté le 21-02-2005 à 23:32:19  profilanswer
 

d'ailleurs, Emmanuel me corrigera (je sors pas le bouquin), c'est même pas une histoire de type d'opérandes, je dirais que  de toutes façons les opérandes de types char ou short sont convertis en int avant d'appliqué la promotion.

n°989357
printf
Baston !
Posté le 21-02-2005 à 23:33:06  profilanswer
 

[citation=989347,20,13,72553]dans l'expression "uint16_1 << 16"
 
quel est le type de l'opérande droite 16 ?[/citation]
 
int.
 
Question subsidiaire : quelle est la taille d'un int sur l'architecture cible [:petrus75]

n°989358
chrisbk
-
Posté le 21-02-2005 à 23:34:32  profilanswer
 

damned [:petrus75]

n°989365
printf
Baston !
Posté le 21-02-2005 à 23:38:25  profilanswer
 

De toutes façons c'est même pas la peine de se prendre le chou, puisque l'expression est mathématiquement fausse [:spamafote]

n°989366
Taz
bisounours-codeur
Posté le 21-02-2005 à 23:40:58  profilanswer
 

pourquoi ? (j'ai pas lu le reste)

n°989367
schnapsman​n
Zaford Beeblefect
Posté le 21-02-2005 à 23:41:53  profilanswer
 

[citation=989365,0,38,95059]De toutes façons c'est même pas la peine de se prendre le chou, puisque l'expression est mathématiquement fausse [:spamafote][/citation]
non  :o  
0<=a<2^16
0<=b<2^16
(a<<16)+b=a*2^16+b, c'est bien ce que mascouilles voulait faire non?  :??: (zetes cons on vous le faites exprès? [:petrus75])

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  comment concaténer 2 entiers

 

Sujets relatifs
Concatener diff valeursEcrire des entiers dans un tableau de char
[VBA] concaténer des tableauxConcaténer un char à la suite d'une string
[Javascript] gestion des longs entiers[PHP] Entiers
Generer un nombre aléatoire à l'exception d'un ensemble d'entiers ?Concatener un $_POST et une variable [RESOLU]
"precision" des entiersConcaténer des entiers en C
Plus de sujets relatifs à : comment concaténer 2 entiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR