Je code pour convertir un int en unsigned char * en tant que tel:Conversion * unsigned char à char * chaîne C
int i = //a number <= 15;
unsigned char * byte = (unsigned char *) &i;
Je le fais parce que je besoin de la valeur d'octet de de cette int. Plus tard, je veux attacher cette valeur d'octet à un char *
, donc j'ai besoin de le convertir en une chaîne.
Ex. if: int i = 15;
then: unsigned char * byte = F;
Cependant, je besoin de convertir cela pour obtenir:
char * string = "F";
J'ai essayé:
char * string = (char *) &byte;
//and
char * string = (char *) byte;
//or just straight up treating it like a char * by going:
printf("%s", byte);
et plusieurs autres combinaisons, mais ils ont tous donné lieu à des défauts seg. Est-ce que quelqu'un sait comment je peux faire cela? Ou même s'il existe un moyen plus simple de convertir un int en représentation hexadécimale dans un caractère?
Je suis très nouveau à C et j'apprécie toutes les réponses merci.
Si '0 <= i <= 15', on dirait que vous voulez' charte non signée byte = (unsigned char) i; 'et' char string [2] = {(char) octet, '\ 0'}; '? Cela semble-t-il correct, ou y a-t-il plus d'un octet impliqué ici? (Et avez-vous réellement besoin de 'printf', ou le' putchar' fonctionnerait-il bien?) – Ryan
'char byte [2]; sprintf (octet, "% X", (caractère non signé) i); printf ("% s", byte); ' – BLUEPIXY
Oui, c'est correct J'ai seulement besoin d'un octet et pas d'un tableau d'octets, donc' unsigned char' suffit. Je sais que "% X" est le moyen d'imprimer des caractères non signés, mais je veux en fait ajouter le caractère "char" converti à un caractère "char *" existant, et non simplement l'imprimer. (les instructions d'impression étaient vraiment juste pour le débogage) – k1234