Estoy tratando de averiguar cómo convertir un NSInteger, digamos 56, a un NSString que es una representación binaria del valor original (int). Tal vez alguien conozca una técnica de formateo que pueda aceptar 56 y devolver "111000" dentro del Objetivo C. Gracias a todos.Cómo convertir NSInteger a un valor binario (cadena)
Respuesta
No hay un operador de formateo incorporado para hacer eso. Si quería convertirlo en una cadena hexadecimal, se podría hacer:
NSString *str = [NSString stringWithFormat:@"%x", theNumber];
Para convertirla en una cadena binaria, usted tiene que construir por sí mismo:
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];
}
Aproximadamente:
-(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];
}
}
¿Qué pasa si la entrada es cero? – epatel
Esto falla si la entrada es 0 (o de hecho si el último bit es 0), y también asigna y desasigna objetos de cadena N, donde N es el número de bits en el número. No muy eficiente. –
Por lo tanto, aproximadamente. Pero buena captura. –
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;
}
empecé a partir de la versión de Adam Rosenfield, y modificar a:
- añadir espacios entre los bytes
- mango firmado enteros
Salida de ejemplo:
-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. cómo convertir NSinteger a String
- 2. Cómo convertir un binario (cadena) en un valor flotante?
- 3. Cómo convertir un NSInteger a un int?
- 4. ¿Convertir NSInteger a NSUInteger?
- 5. ¿Cómo puedo convertir un NSInteger a NSTimeInterval
- 6. ¿Cómo convertir un doble a NSInteger?
- 7. Cómo convertir NSIndexPath a NSInteger?
- 8. Convertir NSInteger a NSIndexpath
- 9. Convertir cadena de 1s y 0s en el valor binario
- 10. cómo convertir un char a binario?
- 11. ¿Cómo convertir una cadena a ascii en binario en C#?
- 12. ¿Cómo convertir una cadena o entero a binario en Ruby?
- 13. ¿Convertir imagen a binario?
- 14. Cómo imprimir un valor NSInteger desde un NSManagedObject utilizando NSLog
- 15. Cómo convertir un valor int a cadena en Go?
- 16. Cómo convertir un valor entero a una cadena?
- 17. En Erlang, ¿cómo convierto una Cadena en un valor binario?
- 18. Convertir cadena de formato binario a int, en C
- 19. Convertir términos de erlang a cadena o decodificar erlang binario
- 20. Convertir una cadena (como testing123) A binario En Java
- 21. Convertir de un binario a un char en C
- 22. convertir el valor doble en el valor binario
- 23. binario a cadena, mejor que un diccionario?
- 24. ¿Convierte NSString a NSInteger?
- 25. archivo binario a cadena
- 26. Convertir cadena de dirección IP a binario en Python
- 27. Convertir cadena a valor de Enum equivalente
- 28. Convertir Binary.toString ('encode64') de nuevo a binario
- 29. Convertir archivo PHP a binario
- 30. Convertir decimal a binario Vector
de conseguir uno de esos errores amarillas si no lo hace 'NSMutableString * str = [NSMutableString stringWithFormat : @ ""]; ' –