だから私は3つの数字を持っています。1つはachar
で、他の2つはint16_t
(sとも呼ばれshort
ますが、表によると、ショートは確実に16ビットではないことがわかりました)。
それらを連結したいと思います。したがって、それらの値は次のとおりであると言います。
10010001
1111111111111101
1001011010110101
私は次のものを含むことになりたいlong long
です:
1001000111111111111111011001011010110101000000000000000000000000
私がオンラインで見つけたいくつかの解決策を使用して、私はこれを思いついた:
long long result;
result = num1;
result = (result << 8) | num2;
result = (result << 24) | num3;
しかし、それは機能しません。デコードすると非常に奇数になります。
私のデコードコードに問題がある場合は、ここにあります:
char num1 = num & 0xff;
int16_t num2 = num << 8 & 0xffff;
int16_t num3 = num << 24 & 0xffff;
何が起きてる?のサイズに関係しているのではないかとlong long
思いますが、頭を包み込むことができず、後でもっと数字を入れる余地が欲しいです。