我正在尝试找出如何将一个NSInteger转换为NSString,例如56,以二进制表示原始(int)值。也许有人知道一种可以接受56并返回"111000"的格式技术,在Objective C中实现。谢谢大家。
我想了解如何将一个整型数(比如56)转化为它的二进制字符串表示,能否提供一种在Objective-C中可以实现这个功能的格式化技术?感谢各位!我正在尝试找出如何将一个NSInteger转换为NSString,例如56,以二进制表示原始(int)值。也许有人知道一种可以接受56并返回"111000"的格式技术,在Objective C中实现。谢谢大家。
我想了解如何将一个整型数(比如56)转化为它的二进制字符串表示,能否提供一种在Objective-C中可以实现这个功能的格式化技术?感谢各位!没有内置的格式化运算符可以实现这样的功能。如果你想将其转换为十六进制字符串,可以这样做:
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];
}
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
Roughly:
-(void)someFunction
{
NSLog([self toBinary:input]);
}
-(NSString *)toBinary:(NSInteger)input
{
if (input == 1 || input == 0) {
return [NSString stringWithFormat:@"%d", input];
}
else {
return [NSString stringWithFormat:@"%@%d", [self toBinary:input / 2], input % 2];
}
}
NSMutableString *str = [NSMutableString stringWithFormat:@""];
,你会得到其中一个黄色错误。 - Eliza Wilson