получение NSData в шестнадцатеричном формате - PullRequest
1 голос
/ 02 февраля 2012

У меня есть функция, возвращающая мне NSData с шестнадцатеричным внутри: например:

NSData *temp = <000b4631 32202835 2047487a 2901088c 129824b0 48606c03 01a1070a >

Теперь это шестнадцатеричные значения, и мне нужно их распечатать.

x = 00
y = 0b 
z = 46 31

Идеальный способ получить их - преобразовать их в массив символов, так как тогда я могу отобразить / типизировать некоторые структуры в массив и зачитать, что я хочу. Как бы я преобразовал эти NSData в массив символов?

Любые другие рекомендации / лучшие практики?

1 Ответ

2 голосов
/ 02 февраля 2012

У меня есть категория на NSData, которая делает это https://github.com/Machx/Zangetsu/blob/master/Source/NSDataAdditions.m

-(NSString *)cw_hexString {
    NSUInteger capacity = [self length] * 2;
    NSMutableString *stringBuffer = [NSMutableString stringWithCapacity:capacity];
    const unsigned char *dataBuffer = [self bytes];

    for (NSUInteger i = 0; i < [self length]; ++i) {
        [stringBuffer appendFormat:@"%02X ",(NSUInteger)dataBuffer[i]];
    }
    if (stringBuffer) {
        return stringBuffer;
    }
    return nil;
}
...