Как преобразовать HEX в NSString в Objective-C? - PullRequest
9 голосов
/ 21 июня 2011

У меня есть строка NSString с шестнадцатеричной строкой типа «68656C6C6F», что означает «привет».

Теперь я хочу преобразовать шестнадцатеричную строку в другой объект NSString, который показывает «привет». Как это сделать?

Ответы [ 4 ]

21 голосов
/ 21 июня 2011

Я уверен, что есть намного лучшие, более умные способы сделать это, но это решение действительно работает.

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;
}
3 голосов
/ 21 июня 2011

Это должно сделать это:

- (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;
}
0 голосов
/ 23 июля 2011

Я думаю, что люди, советующие initWithFormat, являются лучшим ответом, так как он является целью C, а не смесью ObjC, C .. (хотя пример кода немного краткий) .. Я сделал следующее

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];
}
0 голосов
/ 21 июня 2011
+(NSString*)intToHexString:(NSInteger)value
{
return [[NSString alloc] initWithFormat:@"%lX", value];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...