Tengo un NSString con cadena hexadecimal como «68656C6C6F», que significa «hola».

Ahora quiero convertir la cadena hex en otro objeto NSString, que muestra «hola». Cómo hacer que ?

Para aclarar, es la cadena hexadecimal de un NSString o un número entero? Creo que algunos de sus ms responden podría ser confundidos acerca de eso.
La cadena hexadecimal es un NSString, y quiero convertirlo en otro NSString que representa el «hola»
Así, la actualización de su pregunta con esa información para que nadie comete el mismo error de nuevo.
Cualquier sugerencia constructiva a mi pregunta ?
nosotros tenemos las respuestas para usted 😉 tanto en el trabajo como se describe …

OriginalEl autor user403015 | 2011-06-21

4 Comentarios

  1. 20

    Estoy seguro de que hay mucho mejor, más inteligente maneras de hacer esto, pero esta solución hace realmente el trabajo.

    NSString * str = @"68656C6C6F";
    NSMutableString * newString = [[[NSMutableString alloc] init] autorelease];
    int i = 0;
    while (i < [str length])
    {
        NSString * hexChar = [str substringWithRange: NSMakeRange(i, 2)];
        int value = 0;
        sscanf([hexChar cStringUsingEncoding:NSASCIIStringEncoding], "%x", &value);
        [newString appendFormat:@"%c", (char)value];
        i+=2;
    }

    OriginalEl autor RedBlueThing

  2. 3

    Esto debe hacerlo:

    - (NSString *)stringFromHexString:(NSString *)hexString {
    
        //The hex codes should all be two characters.
        if (([hexString length] % 2) != 0)
            return nil;
    
        NSMutableString *string = [NSMutableString string];
    
        for (NSInteger i = 0; i < [hexString length]; i += 2) {
    
            NSString *hex = [hexString substringWithRange:NSMakeRange(i, 2)];
            NSInteger decimalValue = 0;
            sscanf([hex UTF8String], "%x", &decimalValue);
            [string appendFormat:@"%c", decimalValue];
        }
    
        return string;
    }
    [hex UTF8String] debe [hex cStringUsingEncoding:NSASCIIStringEncoding] si es hexagonal es ASCII

    OriginalEl autor Morten Fast

  3. -1
    +(NSString*)intToHexString:(NSInteger)value
    {
    return [[NSString alloc] initWithFormat:@"%lX", value];
    }
    Debo de entrada «68656C6C6F» en el valor del argumento ? También creo que la solución no es correcta.
    No solo no es correcto, pero también se rompe la titularidad de la regla. Feliz de depuración o de pérdida de fijación.
    Creo que esta es la mejor respuesta, he añadido más código de ejemplo en una respuesta furhter abajo
    Esta respuesta debe ser eliminado. La pregunta es acerca de la conversión de una cadena que contiene datos hexadecimales en una cadena que contiene el texto que los datos hexadecimales representa.

    OriginalEl autor Aditya

  4. -1

    Creo que la gente asesoramiento initWithFormat es la mejor respuesta ya que es objective-C en lugar de una mezcla de ObjC, C.. (aunque el ejemplo de código es un poco escueto).. me hizo la siguiente

    unsigned int resInit = 0x1013;
    if (0 != resInit)
    {
        NSString *s = [[NSString alloc] initWithFormat:@"Error code 0x%lX", resInit];
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Initialised failed"
            message:s
            delegate:nil
            cancelButtonTitle:@"OK"
            otherButtonTitles:nil];
        [alert show];
        [alert release];
        [s release];
    }

    OriginalEl autor dancl

Dejar respuesta

Please enter your comment!
Please enter your name here