байтовый массив в ios - PullRequest
       2

байтовый массив в ios

0 голосов
/ 27 января 2012

Я пытаюсь преобразовать этот код Javascript:

self.userSerialEvent = function (join, value, tokens) {
        var type = join.charCodeAt(0);
        var rawJoin = parseInt(join.substr(1)) - 1;
        var rawValue = parseInt(value);
        self.SJValues[join] = value;

        var payload = "\x00\x00" + String.fromCharCode(value.length + 2) + "\x12" + String.fromCharCode(rawJoin) + value;
        self.sendMsg("\x05\x00" + String.fromCharCode(payload.length) + payload);
    };

к объективному коду для приложения ipad. Однако я не могу понять, как правильно сформировать это Если я делаю массив символов, я не могу иметь переменную длину (что произойдет, когда значение будет добавлено в массив). И когда я пытаюсь использовать NSMutableArray, я не могу вставить байты, плюс моя операция отправки по сети принимает NSData, и я не могу преобразовать NSMutableArray в данные. Я также пробовал NSString, но когда я делаю:

NSString * payload = [NSString stringWithFormat:@"0000%d12%d%@",value.length+2,rawJoin,[value dataUsingEncoding:NSASCIIStringEncoding]];

Я получаю <> вокруг данных в строке. Я пытался создать набор символов и удалить «<>» из строки, но это только удалило конец один (оставив начало <там) </p>

У меня такой вопрос: как я могу сформировать массив байтов, который имеет переменную длину и может преобразовать этот массив в NSData

1 Ответ

5 голосов
/ 27 января 2012

Похоже, вы ищете NSMutableData.

NSMutableData *payload = [[NSMutableData alloc] init];
[payload appendBytes:"\000\000" length:2];
uint8_t length = value.length + 2;
[payload appendBytes:&length length:1];
[payload appendBytes:"\022" length:1];
// etc.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...