Как извлечь только первые 2 байта данных из CFReadStream в Objective-C для программирования iPhone
Как я могу прочитать данные из потока чтения в Objective-C? Приведенный ниже код подскажет мне, сколько байтов считывается из потока, но как узнать, какие данные читаются из потока?
CFIndex cf = CFReadStreameRead(Stream, buffer, length);
Как я могу извлечь только первые 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.