C言語で複数の数値データを圧縮してバイト数を減らすことを考えています。
例えば、6bit(0-63)のデータ4つを3byteのデータとして送信する場合、
以下のような方法が考えられます。
//数値データ int data[4] = {10, 20, 40, 60}; uint8_t compData[3] = {0}; comData[0] = data[0] << 2 | data[1] >> 4; comData[1] = data[1] << 4 | data[2] >> 2; comData[2] = data[2] << 6 | data[3];
既存のライブラリや、より簡単な方法があれば教えて頂きたく。
*失礼しました。上記だとuint32_tのデータに入れればよいという事になりそうですが、
よりデータ量が多い場合に対処する方法があるかを把握したいです。
現在直面している課題は合計10以上の異なるbit数からなる全128bitのデータを
16byteにまとめたいと考えています。
例えば1Byteデータを16個並べた型をtypedefで生成して、
その型に各データをbitシフトするという方法がとれるなら多少楽になるかと思いましたが、
16byteの型というものは生成可能なのでしょうか。
回答2件
あなたの回答
tips
プレビュー