我有两个char
,我想将它们按位“缝合”在一起。
例如:
char c1 = 11; // 0000 1011
char c2 = 5; // 0000 0101
short int si = stitch(c1, c2); // 0000 1011 0000 0101
所以,我首先尝试的是按位运算符:
short int stitch(char c1, char c2)
{
return (c1 << 8) | c2;
}
但这不起作用:我得到一个short
等于c2
... (1) 为什么?
(但是:c1
并且c2
在我的真实应用程序中是负数......也许这是问题的一部分?)
所以,我的第二个解决方案是使用union
:
union stUnion
{
struct
{
char c1;
char c2;
}
short int si;
}
short int stitch(char c1, char c2)
{
stUnion u;
u.c1 = c1;
u.c2 = c2;
return u.si;
}
这就像我想要的那样工作......我认为
(2) 最好/最快的方法是什么?
谢谢!