как сделать гекса должен быть 2-х значный на NSData - PullRequest
0 голосов
/ 19 мая 2011


Я пытаюсь использовать шифрование aes на iphone и успех, но результат, который я хочу на nsdata, должен быть двухзначным гекса, я пытаюсь распечатать результат шифрования с этим кодом:

unsigned char ciphertext[16];
....
...
...
...
for (int i=0; i<sizeof(ciphertext); i++) {
    NSLog(@"ciphertext[%d] : %x ",i,ciphertext[i]);

}

Результат:

зашифрованный текст [0]: 43
зашифрованный текст [1]: d4
зашифрованный текст [2]: a5
зашифрованный текст [3]: ee
зашифрованный текст [4]: 24
зашифрованный текст [5]: a5
зашифрованный текст [6]: 31
зашифрованный текст [7]: 62
зашифрованный текст [8]: 1c
зашифрованный текст [9]: 99
зашифрованный текст [10]: 88
зашифрованный текст [11]: 29
зашифрованный текст [12]: d6
зашифрованный текст [13]: 97
зашифрованный текст [14]: 7 <== этопроблема, как сделать, чтобы это было 07?</strong>
зашифрованный текст [15]: 44

Пожалуйста, помогите мне сделать эту гекса из 2 цифр?С уважением,

1 Ответ

1 голос
/ 19 мая 2011

Вы можете использовать:

NSLog(@"ciphertext[%d] : %02x ",i,ciphertext[i]);

См. Спецификацию IEEE printf для получения дополнительных параметров, на которые ссылаются Спецификаторы формата строки doc.

Чтобы сохранить char[] в NSData, вы можете сделать:

NSData *data = [NSData dataWithBytes:ciphertext length:16];
...