当前位置:  开发笔记 > IOS > 正文

如何将NSInteger转换为二进制(字符串)值

如何解决《如何将NSInteger转换为二进制(字符串)值》经验,为你挑选了2个好方法。

我试图弄清楚如何将NSInteger(例如56)转换为NSString,它是原始(int)值的二进制表示.也许有人知道一种格式化技术可以接受56并在Objective C中返回"111000".谢谢大家.



1> Adam Rosenfi..:

没有内置的格式化操作符来做到这一点.如果要将其转换为十六进制字符串,则可以执行以下操作:

NSString *str = [NSString stringWithFormat:@"%x", theNumber];

要将其转换为二进制字符串,您必须自己构建它:

NSMutableString *str = [NSMutableString stringWithFormat:@""];
for(NSInteger numberCopy = theNumber; numberCopy > 0; numberCopy >>= 1)
{
    // Prepend "0" or "1", depending on the bit
    [str insertString:((numberCopy & 1) ? @"1" : @"0") atIndex:0];
}



2> redpicture..:
NSString * binaryStringFromInteger( int number )
{
    NSMutableString * string = [[NSMutableString alloc] init];

    int spacing = pow( 2, 3 );
    int width = ( sizeof( number ) ) * spacing;
    int binaryDigit = 0;
    int integer = number;

    while( binaryDigit < width )
    {
        binaryDigit++;

        [string insertString:( (integer & 1) ? @"1" : @"0" )atIndex:0];

        if( binaryDigit % spacing == 0 && binaryDigit != width )
        {
            [string insertString:@" " atIndex:0];
        }

        integer = integer >> 1;
    }

    return string;
}

我从Adam Rosenfield的版本开始,并修改为:

在字节之间添加空格

处理有符号整数

样本输出:

-7            11111111 11111111 11111111 11111001
7             00000000 00000000 00000000 00000111
-1            11111111 11111111 11111111 11111111
2147483647    01111111 11111111 11111111 11111111
-2147483648   10000000 00000000 00000000 00000000
0             00000000 00000000 00000000 00000000
2             00000000 00000000 00000000 00000010
-2            11111111 11111111 11111111 11111110

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有