mbed — C ++ int или плавающий в массив char

Я пытаюсь преобразовать целое число или число с плавающей точкой в ​​массив символов в определенной форме (программирование для mbed, микроконтроллера).

Целые числа должны быть 32-разрядными целыми числами двоичного числа с двоичным порядком байтов
Число с плавающей запятой должно быть 32-разрядным порядковым числом с плавающей точкой в ​​формате IEEE 754

Пробовал несколько вещей:

uint8_t *v;
uint8_t valuePos = 3;
v = (uint8_t *)datum->data.i; //I get the int or float from datum->data.i
buff[lengthEnd++] = v[valuePos--]; //buff is the char array
buff[lengthEnd++] = v[valuePos--];
buff[lengthEnd++] = v[valuePos--];
buff[lengthEnd++] = v[valuePos];

а также

uint32_t i = BigEndian(datum->data.i);
uint8_t * ptr = (uint8_t *) &i;
strcat(buff, (char *) ptr); //maybe strcat isn't a good function to use here
lengthEnd += 4;

Но я не могу заставить это работать, я всегда получаю какой-то другой номер. Что не так?

1

Решение

Похоже, вы пропустили & оператор.
Пожалуйста, попробуйте это:

v=(uint8_t *)&datum->data.i;

И никогда не использовать strcat для двоичных данных. Это для строк. Двоичные данные должны обрабатываться с чем-то вроде memcpy,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]