开发者

Convert int to CFString without CFStringCreateWithFormat

开发者 https://www.devze.com 2023-03-20 08:48 出处:网络
The following is extremely slow for what I need. CFStringCreateWithFormat(NULL, NULL, CF开发者_开发百科STR(\"%d\"), i);

The following is extremely slow for what I need.

CFStringCreateWithFormat(NULL, NULL, CF开发者_开发百科STR("%d"), i);

Currently this takes 20,000ns in my tests to execute on my 3gs. Perhaps that sounds fast, but I can create and release two NSMutableDictionaries in the time this executes. My C is weak, but there must be something equivalent to itoa that I can use on IOS.


This is the faster I can get:

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);
}
0

精彩评论

暂无评论...
验证码 换一张
取 消