Let's say n = 88, and ch = n.
Although the size will differ, the hex value of n will be the same as ch. Char's are just small int's, with a very small range. Both n(88) and ch(X) equal 58 in hex. All the other bits in n are 0.
Your transmit function may be swapping bits in preparation for transmitting, but that's just a guess.
The sprint() function can be used to put integers into a string as char's, or as hex, etc., as you wish. Better than a series of bit swapping, and the slick way you were looking for, perhaps.
Code:
#include <stdio.h>
int main() {
int n = 88;
char ch;
//ch = n - '0'; <<== Not what you want
ch = (char) n; //or just ch = n;
printf("\nN = %d, Ch = %c, hexN = %x, hexCh = %x", n, ch, n, ch);
printf("\nSizeof(N) = %d, Sizeof(ch) = %d", sizeof n, sizeof ch);
printf("\n\n\t\t\t press enter when ready");
n = getchar();
return 0;
}