Как извлечь только первые 2 байта данных из CFReadStream в Objective-C для программирования iPhone - PullRequest
0 голосов
/ 23 апреля 2010
  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 Ответ

0 голосов
/ 23 апреля 2010
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 .

...