C语言有没有一种简单的运算进行字节扩展?

在C语言中有没有一种简单的办法扩展字节?
比如 8位的10101010 扩展为16位1100110011001100应该如何实现?

char *itoa(int value, char *string, int radix);
我记得这个函数可以

这是要定义一个“函数”,输入是清楚的:一个字节,即unsigned char类型;

  1. 输出是什么?一个双字节整数(unsigned short)?
  2. 映射规则是什么? ——只有一个例子(10101010)->(1100110011001100)有点不够,无从揣摩。多举几个例子吧……

猜测1:

unsigned short some_func(unsigned char c)
{
    unsigned short r = 0;
    for (int i=0; i<8; ++i)
    {
        r |= (0x80 & c);
        r<<=1;
        r |= (0x80 & c);
        c<<=1;
    }
    return r;
}