2015-04-15 81 views
3

您必須將int值轉換爲HEX字符串。Objective-C DEC到HEX

40x04

-40xFC

我使用此代碼[NSString stringWithFormat:@"0x%02X", x]其中xint

4我獲得0x04,但與-4我獲得0xFFFFFFFC

我在哪裏錯了?

+0

它似乎並沒有錯......了'-4'是'0xFFFFFFFC'在32位,但在8位中爲0xFC,如果只需要8位,則掩蓋最終結果;但如果該數字不能用8位表示,則可能需要關注可能的溢出/下溢。 – holex

回答

3

-4類型int的確在32位系統上爲0xFFFFFFFC%02將用零填充單位數字,但不會將較長的數字截斷爲兩位數。

如果您有興趣只打印最後八位,你需要自己掩蓋號:

[NSString stringWithFormat:@"0x%02X", (x & 0xFF)];