Как мне преобразовать NSString с Hexvalue в двоичный символ *? - PullRequest
1 голос
/ 28 мая 2009

У меня есть длинное шестнадцатеричное значение, хранящееся как NSString, что-то вроде:

c12761787e93534f6c443be73be31312cbe343816c062a278f3818cb8363c701

Как мне преобразовать его обратно в двоичное значение, хранящееся в виде символа *

Ответы [ 3 ]

1 голос
/ 28 мая 2009

Это немного неаккуратно, но вы должны встать на правильный путь:

NSString *hexString = @"c12761787e93534f6c443be73be31312cbe343816c062a278f3818cb8363c701";
char binChars[128]; // I'm being sloppy and just making some room
const char *hexChars = [hexString UTF8String];
NSUInteger hexLen = strlen(hexChars);
const char *nextHex = hexChars;
char *nextChar = binChars;
for (NSUInteger i = 0; i < hexLen - 1; i++)
{
    sscanf(nextHex, "%2x", nextChar);
    nextHex += 2;
    nextChar++;
}
0 голосов
/ 12 июня 2009
static NSString* hexval(NSData *data) {
    NSMutableString *hex = [NSMutableString string];
    unsigned char *bytes = (unsigned char *)[data bytes];
    char temp[3];
    int i = 0;
    for (i = 0; i < [data length]; i++) {
        temp[0] = temp[1] = temp[2] = 0;
        (void)sprintf(temp, "%02x", bytes[i]);
        [hex appendString:[NSString stringWithUTF8String: temp]];
    }
    return hex;
}
0 голосов
/ 28 мая 2009

В этой (или очень похожей) теме шестнадцатеричного преобразования была пару недель назад в одном из списков рассылки Cocoa.

Я не могу разумно воспроизвести полное обсуждение здесь (длинная тема), но сообщение, которое начинается с темы, находится здесь:

http://www.cocoabuilder.com/archive/message/cocoa/2009/5/9/236391

Хотелось бы, чтобы для этой задачи был метод Какао, но (в ожидании его нахождения или в ожидании его реализации) код (от Mr Gecko, размещенный по адресу http://www.cocoabuilder.com/archive/message/cocoa/2009/5/10/236424) выглядит так, как будто он будет работать здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...