十进制转换为二进制输出

时间:2014-09-24 16:58:56

标签: ios objective-c

我遇到了将十进制转换为二进制的目标c代码的问题。当我输入小值时,它会显示输出。

例如12 - > 1010

但是当我输入大数字时,它会将输出显示为“10 ...”(包括输出中的点)

请帮帮我。

我的计划如下:

NSUInteger x = [newDec integerValue];
//int y[30];
int i=0;
int m =1;

while (x != 0) {
    int mod = x % 2;
    x /= 2;
    i = i + mod * m;
    m = m * 10;

                       string = [NSString stringWithFormat:@"%d", i];

}

1 个答案:

答案 0 :(得分:0)

您的代码存在两个问题。

1)您的标签尺寸可能无法容纳您的字符串。所以检查它的长度。

2)如果x的值很大,您的代码将不支持转换。原因是int的能力有限。检查此question有关内置变量的内存大小。因此,请考虑使您的字符串可变并在其中添加0或1。我附上了我的代码片段。

NSMutableString *string = [[NSMutableString alloc] init];
while (x != 0) {
    int mod = x % 2;
    x /= 2;
    [string insertString:[NSString stringWithFormat:@"%d", mod] atIndex:0];
}
NSLog(@"String = %@", string);