如何将NSInteger或NSString转换为二进制(字符串)值

时间:2009-12-15 16:57:29

标签: iphone objective-c binary

有人在objective-c中有一些代码将NSInteger或NSString转换为二进制字符串吗?

示例:

56 - > 111000

stackoverflow中有一些代码尝试这样做,但它不起作用。

由于

2 个答案:

答案 0 :(得分:5)

不确定SO上的哪些示例对您不起作用,但Adam Rosenfield's answer here似乎有效。我已经更新它以删除编译器警告:

// 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);

答案 1 :(得分:2)

在这里嘟嘟我自己的号角......

我写了一个名为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

该框架可在its Github repository免费获取。