2011-10-05 218 views
4

我想将二进制数中的十进制数转换。我正在使用这种方法:将十进制转换为二进制

- (NSMutableString*)intStringToBinary:(long long)element{ 
    NSMutableString *str = [[NSMutableString alloc] initWithString:@""]; 
    for(NSInteger numberCopy = element; numberCopy > 0; numberCopy >>= 1) 
    { 
     [str insertString:((numberCopy & 1) ? @"1" : @"0") atIndex:0]; 
    } 
    return str; 
} 

如果数字“元素”> 0,一切都会好起来。如果该号码是< 0就有问题。例如,该方法不能转换数字“-1”。我能做些什么来解决这个问题?提前致谢!!

+0

您可能泄漏内存,您应该返回一个自动释放的可变字符串。 – jrturton

回答

2

您需要额外一点的标志。

实施例:

1xxxx表示二进制数+ xxxx

0yyyy代表二进制数字- yyyy

-1

以下是使用Wallar算法在Python中完成的一种方法。输入和输出是列表。

from math import * 
def baseExpansion(n,c,b): 
    j = 0 
    base10 = sum([pow(c,len(n)-k-1)*n[k] for k in range(0,len(n))]) 
    while floor(base10/pow(b,j)) != 0: j = j+1 
    return [floor(base10/pow(b,j-p)) % b for p in range(1,j+1)]