在没有CFStringCreateWithFormat的情况下将int转换为CFString

时间:2011-07-14 04:45:15

标签: iphone objective-c

以下对我需要的东西来说非常慢。

CFStringCreateWithFormat(NULL, NULL, CFSTR("%d"), i);

目前在我的测试中需要20,000ns来执行我的3gs。也许这听起来很快,但我可以在执行时创建和释放两个NSMutableDictionaries。我的C很弱,但必须有一些等同于我可以在IOS上使用的itoa

1 个答案:

答案 0 :(得分:0)

这是我能得到的更快:

CFStringRef TECFStringCreateWithInteger(NSInteger integer)
{
    size_t size = 21; // long enough for 64 bits integer
    char buffer[size];
    char *characters = buffer + size;

    *(--characters) = 0; // NULL-terminated string
    int sign = integer < 0 ? -1 : 1;

    do {
        *(--characters) = '0' + (integer % 10) * sign;
        integer /= 10;
    }
    while ( integer );

    if ( sign == -1 )
        *(--characters) = '-';

    return CFStringCreateWithCString(NULL, characters, kCFStringEncodingASCII);
}