Как извлечь только первые 2 байта данных из CFReadStream в Objective-C для программирования iPhone

  1. Как я могу прочитать данные из потока чтения в Objective-C? Приведенный ниже код подскажет мне, сколько байтов считывается из потока, но как узнать, какие данные читаются из потока?

    CFIndex cf = CFReadStreameRead(Stream, buffer, length);
    
  2. Как я могу извлечь только первые 2 байта данных в потоке чтения в Objective-C? Например, если это данные из потока:

    017MacApp
    

    1-й байт содержит 0, а 2-й байт содержит 17.

    Как извлечь 0 и 17 в байтовый массив?

Я знаю, что приведенный ниже код вернет мне байтовый массив в значение int.

((b[0] & 0xFF) << 8)+ (b[1] & 0xFF);

но как положить 0 в b[0] и 17 в b[1]?

1 ответ

Решение
uint8_t buffer[2];
CFIndex cf = CFReadStreamRead(Stream, buffer, 2);
if (cf == 2)
{
    uint8_t firstByte = buffer[0];
    uint8_t secondByte = buffer[1];
}
else
{
    // cf == -1 => error, cf == 0 => end of file, cf == 1 => you need to call again to get the second byte
}

Вот Apple Doc.

Другие вопросы по тегам