转换为二进制 - long long和NSUInteger

时间:2013-03-08 20:15:27

标签: ios objective-c cocoa binary

我们需要将以下数据类型转换为二进制文件:

  1. 长到二进制
  2. NSUInteger to Binary
  3. 对此的任何帮助都将受到高度赞赏。

    我的代码是:

    根据上述链接,我们有

     - (NSString *) longlongToBinary:(long long) val {
    
    long long num = val;
    NSString *res = [NSString string];
    
    for (long long i=63; i>=0; i--)
    {
    
        long long div = 1l<<i;
        if ((num&div)==div) res = [res stringByAppendingString:@"1"];
        else res = [res stringByAppendingString:@"0"];
    }
    
    return res;
    

    }

    如果val是20,那么我得到的输出是:

      

    0000000000000000000000000001010000000000000000000000000000010100

    当我在在线转换器中看到它时,这是错误的。

2 个答案:

答案 0 :(得分:2)

long只有32位。由于该方法名为longlongToBinary,因此请将所有long变量更改为long long。这将为您提供正在使用的64位。

现在您已将大多数变量更改为long long,请将循环变量i更改回int,并将1l常量更改为1ll

答案 1 :(得分:2)

文字1l仍然很长。这就是你看两次输出的原因。将文字更改为1ll