Conversion de int vers char * en C

  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Fév 28, 2003
  • Messages: 52
  • Status: Offline

Message Mars 7th, 2003, 7:23 am

Salut à tous

Do u guys sais rapide ou manière intelligente de transformer un type int en un char *? Je veux dire, comme il ya un "int X = 9000" et un char array tampon char * Y. Comment dois-je faire pour être Y (0x90, 0x00)? Je ne peux que penser de la soustraction, il est indépendant de la thath int X en deux octets, et puis moins un certain nombre afin d'obtenir le caractère correspondant à ce numéro ASCII. Je suis sûr u guys pensent de certains de meilleurs moyens. please do let me know. Thanz!

Franky :D
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mars 7th, 2003, 7:23 am

  • ED
  • Student
  • Student
  • No Avatar
  • Inscription: Jan 02, 2003
  • Messages: 66
  • Loc: Halifax
  • Status: Offline

Message Mars 7th, 2003, 4:00 pm

Si vous voulez convertir int char à char ou à l'utilisation de ces int:
char c = 5;
int i = 345;

c = (char) i;
ou
i = (int) c;

Si vous voulez convertir int à char * (string) ou char * int utilisation de ceux-ci:
char str [10];
int i = 567;

str = itoa (i, str, 10); / / 10 - decimal;
ou
i = atoi (str);
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Fév 28, 2003
  • Messages: 52
  • Status: Offline

Message Mars 7th, 2003, 6:31 pm

o...En fait, je veux faire un type int décimal, par exemple 9000, thats neuf mille en un tableau de caractères hexadécimaux, (0x90, 0x00), thats en décimal 144 et 0. Aussi, Im pas l'affichage vraiment le tableau de char, je tiens à le stocker. Donc je ne pense pas que je peux utiliser atoi.

Oui c'est très bizarre de le changer comme ceci.... Im pensée de certains autres façons de modifier mon programme afin que les theres aucune nécessité de ce changement hehe stupide. gif "alt =": D "title =" très heureux "/>

Im fixant maintenant un autre problème.... sais pas pourquoi je ne peux même pas mettre deux caractères dans un tableau de char.... Je l'utilise tout simplement
Code: [ Select ]
char *a, b, c;
a[0] = b;
a[1] = c;
  1. char *a, b, c;
  2. a[0] = b;
  3. a[1] = c;

il devrait y avoir énième problème avec ce droit? :o
  • ED
  • Student
  • Student
  • No Avatar
  • Inscription: Jan 02, 2003
  • Messages: 66
  • Loc: Halifax
  • Status: Offline

Message Mars 7th, 2003, 6:53 pm

Im just gonna prétendre que je connais un peu le C, que je ne...mais très peu.

vous déclarez "a" comme un pointeur, puis le traiter comme un tableau.

vous ne devez pas le pointeur à tous de faire exactement ce que vous avez là
définir une forme d'un tableau comme

Code: [ Select ]
char a[2], b, c;
a[0] = b;
a[1] = c;
  1. char a[2], b, c;
  2. a[0] = b;
  3. a[1] = c;


Lorsque vous utilisez char * a vous consacrer que l'aiguille, mais pas la mémoire pour stocker les données.

im not sure, mais je pense que vous pouvez faire cela
Code: [ Select ]
char *a=(char *)malloc(2);

qui va allouer la mémoire aussi.
même que
Code: [ Select ]
char thearray[2];
char *a=thearray;
  1. char thearray[2];
  2. char *a=thearray;
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 7th, 2003, 7:10 pm

Pour votre premier problème, je suis curieux de savoir pourquoi vous devez diviser le nombre et le stocker comme ça?

Quant à votre deuxième problème

Code: [ Select ]
char *a, b, c;
a[0] = b;
a[1] = c;
  1. char *a, b, c;
  2. a[0] = b;
  3. a[1] = c;


Est-il vous donner une erreur de compilation lorsque vous essayez de le compiler? Aussi je crois que dans votre cas, vous allez vraiment en train de changer dynamiquement la taille de ce tableau char. Je pense que vous devez utiliser une sorte de gestion de la mémoire d'allouer cette mémoire afin que vous ne recevez pas une erreur de segmentation ou similaires. En tout cas en C + + vous pouvez utiliser l'opérateur new pour créer d'abord un tableau qui a une taille dynamique. En C vous devez utiliser quelque chose comme malloc je crois.

int * array;
array = new int [50]; / / c + +

Vous ne savez pas si cela aide aucune.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Fév 28, 2003
  • Messages: 52
  • Status: Offline

Message Mars 7th, 2003, 7:10 pm

o hehe im sorry, oui je ne l'ai mis comme ça, j'ai utilisé un char [256], mais encore.... erreurs...qui est la bonne façon déjà droit? :shock:
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 7th, 2003, 7:13 pm

Quelle est l'erreur que vous obtenez? qui peut aider ici.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Fév 28, 2003
  • Messages: 52
  • Status: Offline

Message Mars 7th, 2003, 7:24 pm

en fait je pense que peut-être sa juste i coz a tort que les codes de retour n'a pas vraiment quelque chose de mal
après l'opération oui l'un des chars a b et c. mais alors je veux passer le paramètre "a" à une autre fonction.
maintenant il ya le problème, dans cette fonction quand je afficher le char "b", son "FFFFFF90h". il est censé être "90h"........
Je pense que mettre mal à afficher les codes de cette fonction ici coz sa véritable long. :D
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 7th, 2003, 7:35 pm

Ok donc pour chaîne de caractères b, avez-vous qu'il est 90h? et comment avez-vous cela? Aussi avez-vous simplement en tant que char initialiser b * b? Ou avez-vous de lui donner une longueur fixe comme char b [2];
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Fév 28, 2003
  • Messages: 52
  • Status: Offline

Message Mars 7th, 2003, 7:48 pm

o Je char b et c...est-il ok? Coz un mauvais stockage simple char...Je pense qu'il
s ok
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 7th, 2003, 7:56 pm

Pouvez-vous copier et coller une partie de votre code? Je pense qu'il pourrait être plus clair sur ce qui se passe de cette manière peut-être :)
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Fév 28, 2003
  • Messages: 52
  • Status: Offline

Message Mars 7th, 2003, 8:08 pm

ok ill mis skmply les parties pertinentes
Code: [ Select ]
int main(void)

{
unsigned char *datafield, *command1, command[256], response[256], commandlen1, resplen;
unsigned short int commandlen, i, j, k, sw, x;

sw1 = 0x90;
sw2 = 0x00;
response[0] = sw1;
response[1] = sw2;
resplen = sizeof(sw);
printf("reponse[0] %02Xh ",response[0]);
printf("reponse[1] %02Xh ",response[1]);
printf("reponse %02Xh", response);
Send(response, resplen);

}
  1. int main(void)
  2. {
  3. unsigned char *datafield, *command1, command[256], response[256], commandlen1, resplen;
  4. unsigned short int commandlen, i, j, k, sw, x;
  5. sw1 = 0x90;
  6. sw2 = 0x00;
  7. response[0] = sw1;
  8. response[1] = sw2;
  9. resplen = sizeof(sw);
  10. printf("reponse[0] %02Xh ",response[0]);
  11. printf("reponse[1] %02Xh ",response[1]);
  12. printf("reponse %02Xh", response);
  13. Send(response, resplen);
  14. }


ND de la fonction appelée est
Code: [ Select ]
short int Send(char *message, unsigned short int nbytes) {
printf("message %02Xh ", message);
printf("message[0] %02Xh ", message[0]);
printf("message[1] %02Xh", message[1]);
printf("message[2] %02Xh", message[2]);
printf("nbytes %i ", nbytes);
    if ((fd = open("reader.txt", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ))<0)
    printf("open error\n");
    if (write(fd, message, nbytes) != nbytes)
        printf("write error\n");
    if (close(fd)<0)
        printf("close error\n");
    return(NO_ERR);
}
  1. short int Send(char *message, unsigned short int nbytes) {
  2. printf("message %02Xh ", message);
  3. printf("message[0] %02Xh ", message[0]);
  4. printf("message[1] %02Xh", message[1]);
  5. printf("message[2] %02Xh", message[2]);
  6. printf("nbytes %i ", nbytes);
  7.     if ((fd = open("reader.txt", O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ))<0)
  8.     printf("open error\n");
  9.     if (write(fd, message, nbytes) != nbytes)
  10.         printf("write error\n");
  11.     if (close(fd)<0)
  12.         printf("close error\n");
  13.     return(NO_ERR);
  14. }

J'ai obtenu la sortie
Code: [ Select ]
reponse[0] 90h reponse[1] 00h reponse 244FD38hmessage 244FD38h message[0] FFFFFF90h message[1] 00hmessage[2] 00h

Thanz!
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 7th, 2003, 8:37 pm

Pour votre prise de fonction de l'essayer

short int Envoyer (unsigned char * message, non signé nbytes short int)

pour le départ. J'ai ajouté la non signés depuis que vous êtes de passage en fait une valeur non signée à elle. Faites-moi savoir si cela devait changer un de vos résultats. Le compilateur que j'utilise ne se compilent pas même le code jusqu'à ce que je le changer pour non signés. Quoi qu'il en soit après l'exécution du programme le résultat que j'obtiens est

Code: [ Select ]
reponse[0] 90h reponse[1] 00h reponse BFFFF870hmessage BFFFF870h message[0] 90h message[1] 00hmessage[2] 00hnbytes 2


Pour moi, cela ressemble à la sortie que vous essayiez d'obtenir. Je pense :silly:
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • frankly
  • Beginner
  • Beginner
  • No Avatar
  • Inscription: Fév 28, 2003
  • Messages: 52
  • Status: Offline

Message Mars 7th, 2003, 9:01 pm

oooooooo :D:D:D
THANZ! haha 8)
Je pense que tout résolu le problème
cool thanz un tas! hehe :D
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 7th, 2003, 9:16 pm

Glad tout fonctionne!
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mars 7th, 2003, 9:16 pm

Afficher de l'information

  • Total des messages de ce sujet: 15 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 88 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC