Как конвертировать NSInteger или NSString в двоичное (строковое) значение - PullRequest
0 голосов
/ 15 декабря 2009

У кого-нибудь есть код в target-c для преобразования NSInteger или NSString в двоичную строку?

пример:

56 -> 111000

Есть некоторый код в stackoverflow, который пытается это сделать, но он не работает.

Спасибо

Ответы [ 2 ]

5 голосов
/ 15 декабря 2009

Не уверен, какие примеры по SO не сработали, но Ответ Адама Розенфилда здесь , кажется, работает. Я обновил его, чтобы удалить предупреждение компилятора:

// Original author Adam Rosenfield... SO Question 655792
NSInteger theNumber = 56;
NSMutableString *str = [NSMutableString string];
for(NSInteger numberCopy = theNumber; numberCopy > 0; numberCopy >>= 1)
{
    // Prepend "0" or "1", depending on the bit
    [str insertString:((numberCopy & 1) ? @"1" : @"0") atIndex:0];
}

NSLog(@"Binary version: %@", str);
2 голосов
/ 15 декабря 2009

Здесь можно немного поднять мой рог ...

Я написал математическую структуру под названием CHMath, которая имеет дело со сколь угодно большими целыми числами. Одна из вещей, которую он делает, позволяет пользователю создать CHNumber из строки и получить ее двоичное представление в виде строки. Например:

CHNumber * t = [CHNumber numberWithString:@"56"];
NSString * binaryT = [t binaryStringValue];
NSLog(@"Binary value of %@: %@", t, binaryT);

Журналы:

2009-12-15 10:36:10.595 otest-x86_64[21918:903] Binary value of 56: 0111000

Фреймворк свободно доступен в его репозитории Github .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...