2014-09-24 5 views
0

Я столкнулся с проблемой с объектным кодом 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]; 

} 
+2

Сделайте свой ярлык более крупным или вызовите 'sizeToFit' на этикетке после установки текста. – rmaddy

ответ

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); 
Смежные вопросы