copier la valeur de long long int dans un tableau de caractères de manière dynamic

J’ai une variable de type long long int appelée iData ;

iData compte de 1 à sa valeur maximale.

J’ai besoin de copier cette variable dans un tableau de caractères.

J’ai essayé cette méthode ci-dessous

 long long int iData; char cDataBuffer[8]; for(i=0;i>8); } 

Mais je veux stocker ceci dans la variable dynamic dans la variable de pointeur char *pDataBuffer .

Quelqu’un peut-il suggérer comment stocker cette longueur variable variable iData?

La logique ci-dessous vous aidera

 long long int iData; char *cDataBuffer; cDataBuffer = malloc(sizeof(char) * sizeof(iData)); for (i = 0; i < sizeof(iData); i++) { cDataBuffer[i] = ((iData >> (i * 8)) & 0XFF); } 

Si vous ne prévoyez pas de modifier cette copie où que ce soit (c’est-à-dire si vous l’utilisez uniquement à des fins de lecture ), voici une solution simple, avec une complexité temporelle de 0 (0):

 char* pDataBuffer = (char*)&iData; 

Bien entendu, si iData est une variable locale, vous ne pouvez pas utiliser la valeur de ce pointeur en dehors de la fonction.

Veuillez également noter que pDataBuffer[i] sera interprété différemment selon les architectures Endian .


Si vous en avez besoin d’une copie à des fins d’ écriture , vous pouvez simplement utiliser la fonction memcpy comme suit:

 char* pDataBuffer = malloc(sizeof(iData)); memcpy(pDataBuffer,&iData,sizeof(iData); return pDataBuffer; 

Si possible, je vous recommande fortement de l’affecter de manière statique en dehors de la fonction et de le transmettre au besoin.

Par exemple:

 void SomeFunction() { ... char aDataBuffer[sizeof(iData)]; SomeOtherFunction(aDataBuffer); ... } void SomeOtherFunction(char* pDataBuffer) { ... memcpy(pDataBuffer,&iData,sizeof(iData); ... } 

Sinon, vous devrez free la mémoire allouée à un moment ultérieur de l’exécution de votre programme.

Encore une fois, gardez à l’esprit que pDataBuffer[i] sera interprété différemment selon les architectures Endian .