私はビットシフトを行う方法を知っていますが、私の値は端から外れているように見え、8ビットを保存しようとすると元の値を失います。符号なし16ビット整数の場合符号なし16ビットと符号なし32ビット整数を符号なし8ビットメモリ配列に符号化するにはどうすればよいですか?
0
A
答えて
1
:符号なし32ビット整数の場合
unsigned short val16 = 0x1234;
unsigned char enc[2];
enc[0] = val16 & 0xff; // stores 0x34 to enc[0]
enc[1] = val16 >> 8 & 0xff; // stores 0x12 to enc[1]
10進リテラルと
unsigned int val32 = 0x12345678;
unsigned char enc[4];
enc[0] = val32 & 0xff; // stores 0x78 to enc[0]
enc[1] = val32 >> 8 & 0xff; // stores 0x56 to enc[1]
enc[2] = val32 >> 16 & 0xff; // stores 0x34 to enc[2]
enc[3] = val32 >> 24 & 0xff; // stores 0x12 to enc[3]
更新
全く同じコードです。
unsigned short val16 = 4660; // 4660 = 0x1234
unsigned char enc[2];
enc[0] = val16 & 255;
enc[1] = val16 >> 8 & 255;
と
unsigned int val32 = 305419896; // 305419896 = 0x12345678
unsigned char enc[4];
enc[0] = val32 & 255;
enc[1] = val32 >> 8 & 255;
enc[2] = val32 >> 16 & 255;
enc[3] = val32 >> 24 & 255;
関連する問題
- 1. Clojureの符号なし16ビット整数
- 2. 符号付き32ビット整数を符号なし32ビット整数に変換する方法は?
- 3. 8ビット符号なしPCMを8ビット符号付きPCMに変換
- 4. 32ビット符号なしオフセットをfseek
- 5. 32ビット符号なし整数の逆ビット
- 6. 32ビット符号なし "Real"データ型(2つの16ビット符号付きワードに分割)をjavascriptに変換
- 7. Pythonバイトを「符号なし8ビット整数」に変換する
- 8. 符号なしnビットと符号付きnビットの違いは?
- 9. 32ビットプロセッサで符号付き整数と符号なし整数を使用して符号付き64ビット整数を作成する方法
- 10. C符号付きを符号なしに維持する正確なビット
- 11. 26ビットの符号なし整数の大きな配列
- 12. 符号なし整数にC++で符号なし整数を書き込む
- 13. C++の符号なし整数と符号なし整数の違い
- 14. 符号なし8ビット整数のビンジュム除算。 C
- 15. 符号付き16進数減算対符号なし
- 16. 2つの符号なし16ビット整数をPerlの符号付き32ビット整数に変換する方法
- 17. 符号なしと符号付きバイナリ整数への追加
- 18. 符号なしchar []、ビットまたはバイト?
- 19. Javascriptが8ビット符号なしjavascript配列を作成
- 20. mysqlでnビットの符号なし整数を表す
- 21. 符号なし
- 22. 2つの16ビット符号付きバイトから符号付き整数を取得しますか?
- 23. JavaScriptの32ビット符号なしリトルエンディアンを整数に変換する
- 24. ラップオーバーフローを伴うmatlabのカスタム12ビット符号なし整数
- 25. 符号が11ビットから32ビットに拡張されます
- 26. 5ビットの符号付き整数?
- 27. 裸の `char32_t`は符号付きか符号なしですか?
- 28. tclで符号なし32ビット整数を表現する方法
- 29. スプリット符号なし32整数再構築可能な2つの16ビット番号
- 30. 2つの符号なし整数(HW)を乗算する32ビットを得る
これは非常によく興味深い質問かもしれないが、あなたはより多くの情報を提供する必要があるとしている - 例えば、サンプルコード、サンプル入力、および問題を示すサンプル出力を。 [mcve] – davidbak