Новый байт []{0} в задаче C
Я пытаюсь перенести следующий код Java в Objective C.
myByteBuffer = new ByteArrayOutputStream(myCfA.length() + 1);
myByteBuffer.write(myCfA.getBytes());
myByteBuffer.write(new byte[]{0});
myWriter.write(myByteBuffer.toByteArray());
myWriter.flush();
Это актуальный код Objective-C
NSInteger strLength = self.myCfA.length;
NSMutableString *response = [NSMutableString stringWithCapacity:strLength];
[response appendString:self.myCfA];
[response appendString:@"0"];
NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSUTF8StringEncoding]];
NSInteger bytesCount = [self.outputStream write:[data bytes] maxLength:[data length]];
Мой подход взять NSMutableString и затем преобразовать в NSData и получить байты правильный подход? Также для нового байта []{0} я напрямую добавляю 0 как строку. Пожалуйста, поправьте меня, если я ошибаюсь. Здесь есть проблема, которую я не могу отследить.
Спасибо судхер
1 ответ
self.myCfA - это строка, которую вы можете напрямую преобразовать в NSData. Поэтому приведенный ниже код даст вам тот же результат.
NSData *data = [self.myCfA dataUsingEncoding:NSUTF8StringEncoding]
NSInteger bytesCount = [self.outputStream write:[data bytes] maxLength:[data length]];
Обновление: добавить байт к существующим данным.
NSMutableData *data = [NSMutableData dataWithData:[self.myCfA dataUsingEncoding:NSUTF8StringEncoding]];
[data appendBytes:[@"\0" UTF8String] length:1];
NSInteger bytesCount = [self.outputStream write:[data bytes] maxLength:[data length]];