Я пытаюсь понять, как преобразовать NSInteger, скажем 56, в NSString, который представляет собой двоичное представление исходного (int) значения. Возможно, кто-то знает метод форматирования, который может принять 56 и вернуть «111000» в Objective C. Спасибо всем.Как преобразовать NSInteger в двоичное (строковое) значение
ответ
Для этого нет встроенного оператора форматирования. Если вы хотите, чтобы преобразовать его в шестнадцатеричную строку, вы можете сделать:
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];
}
Грубо:
-(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];
}
}
Что делать, если вход равен нулю? – epatel
Это не удается, если вход равен 0 (или фактически, если последний бит равен 0), а также выделяет и освобождает N строковых объектов, где 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;
}
Я начал с версии Адама Розенфельд, и модифицирован для:
- добавить пробелы между байтами
- ручка подписали целые
Пример вывода:
-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
- 1. Как преобразовать NSInteger или NSString в двоичное (строковое) значение
- 2. Как преобразовать значение NSDictionary в NSInteger
- 3. Как преобразовать целое значение в строковое значение
- 4. Как преобразовать NSDecimalNumber в NSInteger?
- 5. Преобразовать строковое значение в Constant
- 6. преобразовать двойное значение в двоичное значение
- 7. Как преобразовать строковое значение в целое число
- 8. Как преобразовать строковое значение 6020494385.89982 в double
- 9. Преобразовать значение uint8_t в двоичное значение
- 10. Как преобразовать NSInteger в NSTimeInterval
- 11. Как преобразовать NSInteger в int?
- 12. Как преобразовать NSIndexPath в NSInteger?
- 13. как преобразовать NSString в NSInteger
- 14. как преобразовать NSinteger в String
- 15. Преобразовать строковое значение Date формате
- 16. IOS: преобразовать строковое значение значение для Unit_8
- 17. Как преобразовать строковое значение на сегодняшний день
- 18. Rails - как исправить/преобразовать неправильное строковое значение?
- 19. Как преобразовать строковое значение массива за
- 20. Как преобразовать шестнадцатеричное значение в двоичное значение в C
- 21. Как преобразовать целочисленное значение в строковое значение в java
- 22. Преобразовать переменную строковое значение выражения в JavaScript
- 23. Python, преобразовать представление двоичного кода в реальное двоичное значение
- 24. преобразовать строковое значение в словарь из маринованного
- 25. Как преобразовать необязательный NSInteger в не факультативный?
- 26. Как эффективно преобразовать NSInteger в NSDecimalNumber
- 27. Как передать значение NSDecimal в значение NSInteger?
- 28. Преобразовать строковое значение «$ False» на логическую переменную
- 29. Как преобразовать строковое значение в JavaScript в строку в коде?
- 30. Как преобразовать десятичное значение в двоичное без toBinary в java?
Вы получаете один из этих желтых ошибок, если вы не сделаете 'NSMutableString * ул = [NSMutableString stringWithFormat : @ ""]; ' –