我试图弄清楚如何将NSInteger(例如56)转换为NSString,它是原始(int)值的二进制表示.也许有人知道一种格式化技术可以接受56并在Objective C中返回"111000".谢谢大家.
没有内置的格式化操作符来做到这一点.如果要将其转换为十六进制字符串,则可以执行以下操作:
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