конвертировать NSString в байтовый массив - PullRequest
3 голосов
/ 11 апреля 2011

Я пытался найти его в Google, но не получил точного ответа.

Я хочу преобразовать NSString в массив байтов в iPhone.

Также я хочу знать, что Doрезультат преобразования NSString в byteArray в iPhone будет таким же, как преобразование строки в byteArray в JAVA?

Заранее спасибо за помощь ...

Ответы [ 3 ]

3 голосов
/ 11 апреля 2011

Есть много разных возможных кодировок.Если вы используете одинаковую кодировку как в Objective-C, так и в Java, то вы должны получить одинаковые байты (или строку, если вы идете другим путем).Я ожидаю, что Java будет использовать UTF8, который указан в Какао как NSUTF8StringEncoding.

В NSString есть несколько методов для преобразования строки в кучу байтов.Три из них: -cStringUsingEncoding:, -UTF8String и -dataUsingEncoding:.Первый возвращает символ *, указывающий на завершенный нулем массив символов.Второй выполняет почти то же самое, что и вызов первого и указание UTF8.Третий возвращает NSData *, и вы можете получить доступ к байтам напрямую, используя метод -bytes NSData.

2 голосов
/ 11 апреля 2011
NSData* bytes = [str dataUsingEncoding:NSUTF8StringEncoding];

Будет ли результат преобразования NSString в byteArray в iPhone таким же, как преобразование строки в byteArray в JAVA?

Я считаю, что это стандартизировано UTF-8, так что да.

0 голосов
/ 13 декабря 2013

Следующий код может вам помочь.

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
    {
       NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
       NSString *str = @"Sample String";
       NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
       NSUInteger len = str.length;
       uint8_t *bytes = (uint8_t *)[data bytes];
       NSMutableString *result = [NSMutableString stringWithCapacity:len * 3];
       [result appendString:@"["];
       int i = 0;
       while(i < len){
       if (i) {
            [result appendString:@","];
       }
            [result appendFormat:@"%d", bytes[i]];
            i++;
       }
       [result appendString:@"]"];
       NSLog (@"String is %@",str);
       NSLog (@"Byte array is %@",result);
       [pool drain];
       return 0;
    }

Спасибо, разработчик

...