2016-02-10 4 views
1

У меня есть NSString, который является @"15".Значение NSString как выход NSData

Я хочу, чтобы мой NSData был также 15. Я знаю, как его преобразовать, чтобы получить значение 31 35, но я бы хотел, чтобы мои NSData были 15, если я использую NSLog. Я не прошу конверсии, но больше для перевода. Я не хочу менять печать NSLog, но значение NSData. Есть ли все-таки сделать это?

+0

Что означает, что для NSData должно быть 15? Как закодированная строка? Как значение его первого (1, 2, 4 ...) байта? Скажите, чего вы действительно хотите достичь, и ответы могут быть более полезными. – Eiko

ответ

2

Обработать строку в целое число (предположим, подписанную 32-разрядное целое число):

NSString *str = @"15"; 
int32_t i = (int32_t)[str intValue]; 

Чтобы кодировать его в родной Endian:

NSData *data = [NSData dataWithBytes:&i length:sizeof(i)]; 

Примечание: если вы собираетесь передать, что данных на другой компьютер, тогда вам нужно решить общую сущность примитивных типов. Большой эндиан традиционно используется и облегчается с помощью таких функций, как htonl(), ntohl() и т. Д. Если компьютеры - это одна и та же платформа, то вы можете использовать встроенную спецификацию для небольшого повышения производительности и упрощения кода.

1

Вам необходимо сначала преобразовать строку в байт (путем ее разбора). Затем вы можете построить NSData из байта.

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