How to Convert NSInteger or NSString to a binary (

2020-03-31 06:52发布

Anybody has some code in objective-c to convert a NSInteger or NSString to binary string?

example:

56 -> 111000

There are some code in stackoverflow that try do this, but it doesn´t work.

Thanks

2条回答
家丑人穷心不美
2楼-- · 2020-03-31 07:43

Tooting my own horn a bit here...

I've written a math framework called CHMath that deals with arbitrarily large integers. One of the things it does is allows the user to create a CHNumber from a string, and get its binary representation as a string. For example:

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

Logs:

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

The framework is freely available on its Github repository.

查看更多
看我几分像从前
3楼-- · 2020-03-31 07:46

Not sure which examples on SO didn't work for you, but Adam Rosenfield's answer here seems to work. I've updated it to remove a compiler warning:

// 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);
查看更多
登录 后发表回答