Yes, yours is much nicer.

TW

On Nov 9, 2009, at 12:32 PM, Alastair Houghton wrote:

On 9 Nov 2009, at 17:20, Thomas Wetmore wrote:

I offer the following as a "Cocoa solution" to the OP's query, whatever that might be taken to mean...

(For extra credit: why must the parameter be unsigned?)

Tom Wetmore

NSString* binaryRepresentation (NSUInteger number)
{
        unichar buffer[64];
        NSUInteger n = 0;
        while (number) {
                buffer[n++] = (number & 1) + '0';
                number >>= 1;
        }
        NSInteger i = 0, j = n - 1;
        while (i < j) {
                unichar temp = buffer[j];
                buffer[j] = buffer[i];
                buffer[i] = temp;
                i++, j--;
        }
        return [NSString stringWithCharacters: buffer length: n];
}

Surely

 NSString *binaryRepresentation (NSUInteger number) {
   unichar buf[64];
   unichar *ptr = buf + 64;

   do {
     *--ptr = (number & 1) ? '1' : '0';
   } while ((number >>= 1));

   return [NSString stringWithCharacters:ptr length:buf + 64 - ptr];
 }

is simpler, as well as actually working when you pass in 0 (yours doesn't). (I should add that I haven't tested this at all; I just wrote it in Mail.app...)

Kind regards,

Alastair.

--
http://alastairs-place.net




_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to