2013-03-02 2 views
0

У меня NSData так:Как преобразовать эти NSData в NSString?

455a4f4e 00000001 01020304 00000000 00000000 

Мой код:

Byte bytes[] = {0x45, 0x5a, 0x4f, 0x4e, 0, 0, 0, 1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0}; 
NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)]; 
NSString *str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
NSLog(@"%@", str); // prints "EZON" 

Я желаю результата быть EZON0001 и т.д ...

Почему результат печати не включают в себя следующие цифры 'EZON'?

ответ

4

Поскольку нуль после 0x4e не является цифрой ASCII/UTF-8 '0', а конец символа строки. он должен быть 0x30, 0x00 не ...

+1

+1 хорошо объяснил ответ :) –

+0

Большое спасибо! – withshe

+0

Убедитесь, что вы оставили один 0 в конце массива байтов для нулевого терминатора. – rmaddy

0

попробовать это

Byte bytes[] = {0x45, 0x5a, 0x4f, 0x4e, 0, 0, 0, 1, 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0}; 
    NSData *data = [NSData dataWithBytes:bytes length:sizeof(bytes)]; 
    NSString* newStr = [NSString stringWithUTF8String:[data bytes]]; 
    NSLog(@"%@", newStr); 
+0

Проблема заключается в том, что поставляются неправильные байты для символов '0 0 0 1' и т. Д. Остальная часть кода в порядке. – rmaddy

+0

@ravindhiran: Не нужно отвечать, когда вы видите ответ с 4 upvotes, если не видите, что можете дать лучше. –

+0

Спасибо за ваш ответ, но ваш ответ неправильный. – withshe

Смежные вопросы