Compréhension de la déclaration d'un tableau

Bonjour,
Je souhaiterai vous demander un renseignement sur la déclaration d'un tableau. Quelle est la différence entre

int32_t playbuf[128]; 
uint8_t playbuf[128]; 

Je sais un int32_t il y a 4 octets et un uint8_t il y a 1 seul octet mais qu'est ce que cela change ? C'est de tout façon un tableau de 128 valeurs non ? Merci de vos réponses.

Oui mais

  • le premier va permettre de stocker des valeurs sur 32 bits. int32_t définit des entiers signés donc des valeurs comprises entre -2147483648 et 2147483647. Il occupera 512 octets en mémoire.
  • le second va stocker des valeurs sur 8 bits. uint8_t définit des entiers non signés donc des valeurs comprises entre 0 et 255. Il occupera 256 128 octets en mémore.

Merci, j'avais effectivement un peu oublié. Mais pourquoi 512 octets pour le premier ? Pour le uint8_t je comprend cela fait 2(exp 8). 512 octets cela fait 2(exp 9), cela fait 9 bits or on avait 32 bits normalement non ?

J'avais une fonction

/**
  * @brief  Receive an amount of data in non-blocking mode with DMA.
  * @param  hsai pointer to a SAI_HandleTypeDef structure that contains
  *              the configuration information for SAI module.
  * @param  pData Pointer to data buffer
  * @param  Size Amount of data to be received
  * @retval HAL status
  */
HAL_StatusTypeDef HAL_SAI_Receive_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size)

Et effectivement le pointeur uint8_t *pData nécessite un unit8_t et non un int32_t, je récupérai la moitié de résultat avec int32_t et avec le unit8_t je récupérai intégralement des données, c'est pour cette raison je demande plus de précision.

Tu as 128 cases de chacune 4 octets (32 bits) soit 4*128 = 512 octets.
Tu confonds la taille mémoire et le nombre de données que l'ont peut coder en int32

Merci, je confonds parfois car cela fait longtemps que je n'ai pas codé en C.
En revanche pour le uint8_t

Dans ce cas 1 octets (8 bits) soit 1*128 = 128 octets alors pourquoi 256 octets ? Il y a quelque chose qui m'échappe.

Oui, pour moi aussi ça doit faire 128 octets. Ce doit être une erreur de calcul.

Il n'y a pas de soucis, c'était juste il y a un des 2 qui était incompatible. Oui juste un petit oubli mais l'essentiel y est. Merci à vous tous.

Erreur corrigée.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.