J'ai une fonction qui accepte uint8_t * qui est censé être une chaîne. Je veux envoyer un double à cette fonction. J'ai essayé ce code ci-dessous, mais cela ne fonctionne pas.Convertir double en uint8_t *
double a = 10.98
uint8_t* p = (uint8_t*) &a;
printf("p: %u \n", p);
send_data(p);
Mais Ce code ci-dessous fonctionne, tout ce que je veux est de remplacer la chaîne « 90 » avec une variable double CI-DESSUS.
static const char *data[6];
data[0] = "90";
static uint8_t *test;
test = (unsigned char *) data[dataCounter] ;
send_data(test);
Donc ce que je veux dire par ne fonctionne pas est que la fonction est censé send_data d'envoyer une chaîne via Bluetooth à un téléphone Android. Si je le fais comme le premier exemple de code, la chaîne est passée correctement.
Note: Je pense que c'est probablement à cause de la différence dans les types de données qui est passée au second argument. La fonction attend 3 arguments.
static uint32_t send_data(uint8_t data[]){
return ble_nus_string_send(&m_nus, data, 5);
}
C'est la fonction défintion:
uint32_t ble_nus_string_send (ble_nus_t * p_nus,uint8_t * p_string,
uint16_t length
)
vous devez poster plus de données Que voulez-vous dire « ne fonctionne pas »? Que voyez-vous, que faites-vous? ng –
Vous pourriez lire à propos de 'sprintf()'. Et les bases de C, pendant que vous y êtes. – EOF
@EOF: Mon mauvais, raté le '*' –