Возможно, это довольно просто для некоторых из вас.Вопрос о C++
Я смотрел следующую функцию последовательного чтения, и я не могу понять, что здесь делает &prefix[2]
. Означает ли это, что только два байта могут быть заполнены или что-то еще?
Следует также упомянуть, что это часть платформы игрока/этапа.
while (1)
{
cnt = 0;
while (cnt != 1)
{
if ((cnt += read(fd, &prefix[2], 1)) < 0)
{
perror("Error reading packet header from robot connection: P2OSPacket():Receive():read():");
return (1);
}
}
if (prefix[0] == 0xFA && prefix[1] == 0xFB)
{
break;
}
GlobalTime->GetTimeDouble(×tamp);
prefix[0] = prefix[1];
prefix[1] = prefix[2];
}
спасибо человеку. вы спасли мои часы головы, царапая простую вещь. я смотрел на большую картину чтения байтов и вида потерянного сюжета. – nixgadgets
bdw любая причина, почему это сделано так, а не чтение заголовка или первых 3 байтов в одном цикле? – nixgadgets
Вы хотите проверить байты синхронизации относительно каждой позиции в потоке. При чтении 3 байтов возникает много проблем. Чтобы выжить, вам понадобится конечный автомат. Перемещение байтов намного дешевле. – harper