我遇到了将十进制转换为二进制的目标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];
}
答案 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);