Я читаю данные из последовательного порта. Мне удалось настроить порт и прочитать его в буфере, но я не могу понять, как преобразовать данные, хранящиеся в буфере, в float.Как преобразовать boost :: asio :: streambuf в float?
float Serial::ReadData()
{
boost::asio::streambuf buff;
int bytesRead = read_until(*port, buff, "\n");
boost::asio::const_buffers_1 constBuff = buff.data();
char*data = nullptr;
int pos = 0;
for (auto buffer = constBuff.begin(); buffer != constBuff.end(); buffer++)
{
data[pos] = reinterpret_cast<char>(buffer);
pos++;
}
buff.consume(bytesRead);
return atof(data);
}
Вы даже не указать, что streambuf содержит. Является ли он двоичным? Ascii? base64? Сжатый? IEEE raw bytes? ' – sehe
Я читаю от bluetooth, подключенного к COM-порту, поэтому я считаю, что он отправляет сырые байты. – ZeroPhase
В этом случае ваш автоответ не имеет никакого смысла. http://en.cppreference.com/w/cpp/string/byte/atof Более того, если вы не знаете точный формат проводов, на него никто не может ответить. Заметьте, мой ответ делает логически то же самое, что и ваш 'atof'. Я собираюсь выйти на конечность и предположить, что, очевидно, вы уже выяснили, что формат представляет собой текстовое представление. – sehe