Во-первых, это, как правило, плохая идея :-( (обычно вызывает некоторое переполнение буфера)
Во-вторых, поскольку интересующее вас целое число является 8-разрядным, оно того же размера, что и single char
. Поэтому, если вы хотите реализовать это, просто сделайте следующее:
if (message[strlen(message)-1]<integer){
for (int i=strlen(message);i>0;i--){
if (message[i-1]){
message[i-1]--;
for (j=i+1;j<strlen(message)-1;j++){
message[j]=255;
}
message[strlen(message)-1]=(char)((int)(message[strlen(message)-1])+255-remainder);
break;
}
}
/* ERROR - message is less than remainder */
}
else{
message[strlen(message)-1]-=remainder;
}
и все готово.
Обратите внимание, что деталь (char)((int)(message[strlen(message)-1])+255-remainder)
может не понадобиться; Я пишу это просто, чтобы убедиться, что при выполнении сложения и вычитания все преобразуется в int
.