2015-04-15 7 views
3

Привет, мне нужно преобразовать значение int в строку HEX.Objective-C DEC to HEX

От 4 к 0x04

От -4 к 0xFC

Я использую этот код [NSString stringWithFormat:@"0x%02X", x] где x является int.

С 4 Я получаю 0x04, но с -4 Я получаю 0xFFFFFFFC.

Где я ошибаюсь?

+0

это не кажется неправильным ... '' -4' является 0xFFFFFFFC' в 32 бит, но '0xFC' в 8 бит, замаскируйте конечный результат, если он вам нужен только в 8 бит; но вам, возможно, придется беспокоиться о возможном превышении/недополнении, если число не может быть представлено в 8 бит. – holex

ответ

3

-4 типа int действительно 0xFFFFFFFC на 32-битных системах. %02 будет вводить одноразрядные числа с нулевым значением, но он не будет усекать более длинное число до двух цифр.

Если вы заинтересованы в печати только последние восемь бит, вам нужно маскировать число себя:

[NSString stringWithFormat:@"0x%02X", (x & 0xFF)]; 
Смежные вопросы