2015-05-01 2 views
0

У меня есть NSData с шестнадцатеричным значением внутри, например. <EC>.Objective C конвертирует NSData с шестнадцатеричным значением в int

Теперь мне нужно преобразовать это значение в переменную int, чтобы получить int x = -20.

Идеи?

+0

Как значение получилось закодировано в объект NSData? –

+0

См. Http://stackoverflow.com/questions/10696391/convert-nsdata-to-byte-array, чтобы узнать, как получить значения байтов из 'NSData'. Оттуда вам не будет проблем с обработкой любого байта, который вам нужен. – rmaddy

+0

Что вы делали до сих пор? –

ответ

4

Вы можете использовать getBytes извлечь эти байты из NSData:

uint8_t byte; 
[data getBytes:&byte length:1]; 

Если вам действительно нужно, что в int, а затем захватить его с этой uint8_t переменного:

int x = byte; 

В стороне, если вам действительно нужно это значение 0xec, которое интерпретируется как -20, а не 236, вы можете использовать int8_t вместо uint8_t, и знак этого байтового значения будет сохранен. Часто, однако, имея дело с двоичными данными, мы имеем дело с неподписанными байтами, а не с целыми числами, но это просто зависит от того, что представляет собой этот двоичный файл NSData.

+2

Я просто печатал то же самое. – rmaddy

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