Samira Radwan Ответов: 1

Формат NSData, чтобы в nsstring Objective-С


Всем Привет,
Я знаю, что это должно быть очень прямолинейно и просто, но я пытался преобразовать NSData в NSString с помощью Obj-C, но выходы-это не то, что я действительно хотел.

моя переменная NSData:
NSData *blockData = [NSData dataWithBytes:&data length:sizeof(data)];

Я пытаюсь это напечатать NSLog как показано ниже:
NSLog(@"sneding block: %@", blockData);

выход такой::
018-06-13 08:05:18.641965-0400 sendData[3016:1171273] sneding: <0000e992 ffff0300 00884242 4242ffff ffff>

Мне нужно, чтобы выходные данные были в строке или числах, а не в шестнадцатеричном формате, я сделал это в java, преобразовав массив byte[] в string: Arrays.toString(byte[]) вывод что-то вроде: [-24,14,60,103,-119,14,-118,12,-117,13,18,84,81,-118,10,-117,11,-22]

есть идеи?
Заранее спасибо

Что я уже пробовал:

Я пытался использовать NSUTF8StringEncoding
NSString *str = [[NSString alloc] initWithData:blockData encoding:NSUTF8StringEncoding];//returns null

также пробовать NSASCIIStringEncoding но безрезультатно
[[NSString alloc] initWithData:blockData encoding:NSASCIIStringEncoding];//returns ascii codes

1 Ответов

Рейтинг:
2

User 7429338

Вы можете сделать это вот так:

NSMutableString * str = [NSMutableString string];
for (int i = 0; i<sizeof(data); i++)
{
    [str appendFormat:@"%d ", data[i]];
}

NSLog(@"%@",str);


Samira Radwan

Спасибо!
это решение очень хорошо работает при использовании массива байтов или знакового символа. но если` data `имеет тип` NSData', то я получил ошибку: ожидаемый метод чтения элемента массива не найден на объекте типа NSData. мы не можем просто читать данные[i], Если это NSData

[no name]

Если у вас есть объект blockData типа NSData, вы можете преобразовать его в байтовый массив данных следующим образом:
data = [blockData байт];