У меня есть массив без знака char [248]; заполненный байтами. Как 2F AF FF 00 EB AB CD EF..... Этот массив является моим байтовым потоком, в котором я храню данные из UART (RS232) в качестве буфера.
Теперь я хочу преобразовать байты обратно в мои uint16 и int32.
В С# я использовал класс BitConverter для этого. например:
byte[] Array = { 0A, AB, CD, 25 };
int myint1 = BitConverter.ToInt32(bytes, 0);
int myint2 = BitConverter.ToInt32(bytes, 4);
int myint3 = BitConverter.ToInt32(bytes, 8);
int myint4 = BitConverter.ToInt32(bytes, 12);
//...
enter code here
Console.WriteLine("int: {0}", myint1); //output Data...
Есть ли аналогичная функция в C? (no.net, я использую компилятор KEIL, потому что код работает на микроконтроллере)
С уважением Сэм
Решения: Путь A)
сначала мне пришлось преобразовать или инициализировать массив как uint8_t ARRAY [248]; Затем я использовал этот код с вашей помощью:
uint32_t* myint1 = (uint32_t *)&RXBUFF[2]; //test
uint16_t* myint2 = (uint16_t *)&RXBUFF[6]; //test3
Внимание: Значение int "1985" в шестнадцатеричном выражении представлено как 0x07C1 в myint2. байт, который я отправил, был "C1 07", поэтому микроконтроллер меняет порядок байтов
Я также проведу другие методы.
WR Sam:)