繁体   English   中英

在目标C中将字符串变量从二进制转换为十进制

[英]Converting a string variable from Binary to Decimal in Objective C

我正在尝试创建一个二进制到十进制的计算器,但在进行任何切实可行的转换时遇到了麻烦。 首先,Id希望向目标C和一般编程的入门者介绍自己。 结果,许多概念对我来说似乎很困难,所以我主要是在寻找最简单的方法来理解,而不是最有效的方法。 目前,我有一个可以接受输入并将其显示在标签中的计算器。 这部分工作正常,我没有问题。 输入存储在其中的变量是_display = [[NSMutableString stringWithCapacity:20] retain]; 这是完美的工作,我能够相应地修改数据。 我想做的是能够在另一个标签中显示转换的NSString。 目前,我已经尝试了一些解决方案,但还没有得到令人满意的结果,这是最新的尝试

    - (NSMutableString *)displayValue2:(long long)element
{
    _str= [[NSMutableString alloc] initWithString:@""];     
    if(element > 0){
        for(NSInteger numberCopy = element; numberCopy > 0; numberCopy >>= 1)
        {

            [_str insertString:((numberCopy & 1) ? @"1" : @"0") atIndex:0];
        }
}
    else if(element == 0)
    {
        [_str insertString:@"0" atIndex:0];
    }
    else
    {
        element = element * (-1);

        _str = [self displayValue2:element];
        [_str insertString:@"0" atIndex:0];
        NSLog(@"Prima for: %@",_str);
        for(int i=0; i<[_str length];i++)

        _str = _display;
        NSLog(@"Dopo for: %@",_str);
    }
    return _str;

}

在View Controller中,我有一个转换按钮设置,当按下该按钮时,我要将第二个显示字段设置为十进制等效值。 就像我将displayValue2设置为返回其选择的字符串一样,此方法有效。 我所需要的只是帮助使这种转换生效。 目前,这段代码导致“不完整的实现”显示在我的课程的。 请帮助,并为那些花时间帮助的人欢呼。

因此,基本上您真正想要的是将二进制数字转换为十进制数字的方法,对吗? 思考此问题的另一种方法是将数字的基数从2改为10 我以前在项目中使用过这样的功能:

+ (NSNumber *)convertBinaryStringToDecimalNumber:(NSString *)binaryString {
    NSUInteger totalValue = 0;
    for (int i = 0; i < binaryString.length; i++) {
        totalValue += (int)([binaryString characterAtIndex:(binaryString.length - 1 - i)] - 48) * pow(2, i);
    }
    return @(totalValue);
}

显然,这是以字符串表示形式访问二进制文件。 这很有效,因为您可以轻松访问一个更困难的数字中的每个值。 您还可以轻松地将返回类型从NSNumber更改为某些字符串文字。 这也适用于您的element == 0场景。

// original number wrapped as a string
NSString *stringValue = [NSString stringWithFormat:@"%d", 11001];
// convert the value and get an NSNumber back
NSNumber *result = [self.class convertBinaryStringToDecinalNumber:stringValue];
// prints 25
NSLog(@"%@", result);

如果我误解了一些东西,请澄清一下,如果您不明白代码,请告诉我。 同样,这可能不是最有效的,但是它简单而干净。

我也非常同意Hot Licks的评论。 如果您真的对良好的学习感兴趣并且想成为一名发达的程序员,那么应该首先学习一些基础知识(我学习Java并很高兴自己做了)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM