için NSInteger Nasıl dönüştürme, orijinal (int) değerinin bir ikili temsilidir bir NSString, 56 söylüyorlar. Belki birisi 56 kabul edebilecek ve Objective C içinde "111000" geri dönebilecek bir formatlama tekniğini bilir. Teşekkürler.Bir NSInteger dönüştürmek anlamaya çalışıyorum bir ikili (string) değeri
cevap
bunu yapmak için hiçbir yerleşik biçimlendirme operatör var. Eğer onaltılık dizeye dönüştürmek istiyorsa, bunu yapabilirsiniz: bir ikili dizeye dönüştürmek için
NSString *str = [NSString stringWithFormat:@"%x", theNumber];
, bunu kendiniz inşa etmek gerekecek: Kabaca
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];
}
:
-(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];
}
}
Giriş sıfır ise ne olur? – epatel
Bu, giriş 0 (veya son bit 0 ise, 0) olduğunda başarısız olur ve ayrıca N dizesi nesnelerini ayırır ve ayırır, burada N sayıdaki bitlerin sayısıdır. Çok verimli değil. –
Bu yüzden kabaca. Ama iyi yakalayın. –
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 en sürümden başladı ve modifiye:
- bayt arasında boşluk eklemek
- sap işaretlenmiş tam
Örnek çıktı:
-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
Sen şu sarı hatalardan biri sen 'yapmazsak NSMutableString * str = [NSMutableString stringWithFormat olsun : @ ""]; ' –