gpt4 book ai didi

ios - 十进制转二进制的方法Objective-C

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:55:55 32 4
gpt4 key购买 nike

您好,我正在尝试在 Objective-C 中制作一个十进制到二进制数字转换器,但一直没有成功...到目前为止,我有以下方法,它是从 Java 尝试翻译的类似方法。非常感谢任何使此方法起作用的帮助。

 +(NSString *) DecToBinary: (int) decInt
{
int result = 0;
int multiplier;
int base = 2;
while(decInt > 0)
{
int r = decInt % 2;
decInt = decInt / base;
result = result + r * multiplier;
multiplier = multiplier * 10;
}
return [NSString stringWithFormat:@"%d",result];

最佳答案

我会使用位移来达到整数的每一位

x = x >> 1;

将位向左移动一位,十进制的 13 在位中表示为 1101,因此将其向右移动会产生 110 -> 6。

x&1

是位掩码 x 与 1

  1101
& 0001
------
= 0001

组合这些行将从最低位到最高位进行迭代,我们可以将该位作为格式化整数添加到字符串中。

对于 unsigned int 可能是这样的。

#import <Foundation/Foundation.h>

@interface BinaryFormatter : NSObject
+(NSString *) decToBinary: (NSUInteger) decInt;
@end

@implementation BinaryFormatter

+(NSString *)decToBinary:(NSUInteger)decInt
{
NSString *string = @"" ;
NSUInteger x = decInt;

while (x>0) {
string = [[NSString stringWithFormat: @"%lu", x&1] stringByAppendingString:string];
x = x >> 1;
}
return string;
}
@end

int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString *binaryRepresentation = [BinaryFormatter decToBinary:13];
NSLog(@"%@", binaryRepresentation);
}
return 0;
}

此代码将返回 1101,即 13 的二进制表示。


do-while 的缩写形式,x >>= 1x = x >> 1 的缩写形式:

+(NSString *)decToBinary:(NSUInteger)decInt
{
NSString *string = @"" ;
NSUInteger x = decInt ;
do {
string = [[NSString stringWithFormat: @"%lu", x&1] stringByAppendingString:string];
} while (x >>= 1);
return string;
}

关于ios - 十进制转二进制的方法Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366159/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com