2013-11-24 79 views
1

我有一個NSNumber轉換爲十六進制字符串類似如下:轉換的NSNumber爲十六進制字符串16位

return [NSString stringWithFormat:@"%llX", self.unsignedLongLongValue]; 

不幸的是,這有時給我串像93728A166D1A287,他們應該是093728A166D1A287,取決於數。

提示:領先的。


我也試了一下:

return [NSString stringWithFormat:@"%16.llX", self.unsignedLongLongValue]; 

沒有成功。


我可以做這樣的事情,但只是吮吸:

- (NSString *)hexValue { 
    NSString *hex = [NSString stringWithFormat:@"%llX", self.unsignedLongLongValue]; 
    NSUInteger digitsLeft = 16 - hex.length; 

    if (digitsLeft > 0) { 
     NSMutableString *zeros = [[NSMutableString alloc] init]; 
     for (int i = 0; i < digitsLeft; i++) [zeros appendString:@"0"]; 
     hex = [zeros stringByAppendingString:hex]; 
    } 

    return hex; 
} 

所以最後我的問題,是有沒有辦法強制執行字符串爲16個字符?

+2

'%016llX'(提示:領先的0)... – 2013-11-24 21:18:14

回答

6

如果需要零墊的十六進制數,格式說明前面用零,這樣的:

return [NSString stringWithFormat:@"%016llX", self.unsignedLongLongValue]; 

這應該採取與16位格式化你的一些照顧,不管有多少該數字具有「有意義」的數字。

這裏是純C語言的a demo of this format string(這部分是在兩種語言之間共享的)。

+0

哇,我怎麼錯過了?你是第一個,所以你的將被接受:) – NSAddict

3

用途:

return [NSString stringWithFormat:@"%016llX", self.unsignedLongLongValue]; 

這臺領導0和輸出字符串的長度。

相關問題