Набивка с PKCS7 [C]

Я хочу сделать отступы с PKCS7:

char *test1 = "azertyuiopqsdfgh";
char *test2 = malloc(32*sizeof(char));

memcpy(test2, test1, strlen(test1));

char pad = (char)(32-strlen(test1));
printf("pad = %d\n", pad);

for(int i = strlen(test1) ; i < 32 ; i++) {
    test2[i] = pad;
}
for (int i = 0 ; i < 32 ; i++)
    printf("%x ", test2[i]);
printf("\n");

Я получаю:

pad = 16

61 7a 65 72 74 79 75 69 6f 70 71 73 64 66 67 68 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10

Но я хочу:

pad = 16

61 7a 65 72 74 79 75 69 6f 70 71 73 64 66 67 68 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16

Как я могу изменить свой код?

Заранее спасибо.

1 ответ

Решение

С

printf("%x ", test2[i]);

Вы печатаете в шестнадцатеричном (% x), тогда как с

printf("pad = %d\n", pad);` you are printing in decimal (%d). 

И (десятичное) 16 => (гекса) 10, так что вы показываете правильную вещь.

Возможно, вы могли бы немного поиграть со своей печатью, чтобы отобразить 16 вместо 10, но я не думаю, что это то, что вы ищете.

Другие вопросы по тегам