私には2つ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
私の実際のアプリでは負の数です...多分これは問題の一部ですか?)
だから、私の2番目の解決策は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)最良/最速の方法は何ですか?
ありがとう!