A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
>ちなみに、
>考え方の参考にしたページ
それビット配列のお話ではなく圧縮の話ですから、圧縮について勉強しましょう。
参考にされたページのは長さ1or8どちらか限定のランレングス圧縮ってとこでしょうか。
>また、例に挙げた数値がchar型ですから8bitですが、int型なら32bitになりますね。
ということは型情報も必要になりますね。
こっちはデータのシリアライズ化の話になるかと思います。
どちらも教えてといわれたからと簡単に教えられるようなものではないです(正直、基礎知識が足りてないと思う)。
この回答への補足
確かにデルタ圧縮と書いてありましたが、ビット配列を自分で操作するのかと思いました。
型情報に関してはデータ配列の順番が分かっていればプログラムにその順で記述していけば問題ないかと思いました
例えば
char int char floatという順でデータを入れることが分かっているなら
10000010110000000000000000000000000000111000
という配列を受け取ったら
1ビット読み込む
→1だから8ビット分読み込み・・・5
1ビット読み込む
→1だから8ビット分読み込む・・・14
1ビット読み込む
→0だから値0
1ビット読み込む
→0だから値0.0f
みたいにすればよいのかと思いました
取りあえず、圧縮について勉強してきます
No.3
- 回答日時:
・ある構造体、配列などから上記のようなビット配列にする方法
メモリ確保して2進数で突っ込めばいいんじゃないでしょうか。
・ビット配列から通常の値にする方法
まず、あなたのその表記の仕方は情報不足です。
常に8ビット読むわけではないですよね。常に8bitだったら印が無いほうが楽だと思います。
・ビット配列のサイズ取得方法
逆に言うとサイズを決めて配列を準備します。
データのある範囲と言う事であれば、
1.先頭にデータサイズを保存する
2.末尾のパターンを決める
とかにすればいいでしょう。
個人的にはあなたがやりたい事が明確になっていないか、
実現する方法が明確になっていない気がします。
それが決まらないのにやり方が決まるわけがありません。
この回答への補足
>メモリ確保して2進数で突っ込めばいいんじゃないでしょうか。
これが分かりません
>常に8ビット読むわけではないですよね
書いてある通り、0の時は1bitになりますね。
また、例に挙げた数値がchar型ですから8bitですが、int型なら32bitになりますね。
>実現する方法が明確になっていない気がします
ちなみに、
考え方の参考にしたページ
http://www.4gamer.net/games/105/G010549/20100905 …
↑のサイトのこの画像
http://www.4gamer.net/games/105/G010549/20100905 …
です
No.2
- 回答日時:
そういうクラスを作る…というところでしょうかね。
具体的なコードとかは出てきませんが。
保持している領域の節約を行いたいのでしょうが……
・現在の環境ではその程度の節約はほとんど意味が無い。
・変換にかかるコストが無駄。
などなど……。
手間掛けた分に見合う効果が期待できないので、コードまで出てきませんね。
4,0,5と入っていた配列が0,0,4とかに変更になったとき、ビットパターンは前詰めにするんですか?
データ量が膨大だった時にかなりの操作を要求されますが、それがただのchar型配列だったとき(1個の変更で完了)よりも使いやすいものでしょうか?
ファイルへの読み書き時に…という限定的な内容であればまだしも、通常使うデータ形式としてはいささか非効率的かと。
# しかも、データに0が含まれないと1ビットずつデータが増えることになりますが。
# 0,1,2,3,4,5,6,7,8の配列だと、1+9+9+9+9+9+9+9+9=73Bit。1Bit増えてます。
この回答への補足
保持している領域というか、通信データ量を押さえたいのです。
考え方の参考にしたページ
http://www.4gamer.net/games/105/G010549/20100905 …
↑のサイトのこの画像
http://www.4gamer.net/games/105/G010549/20100905 …
毎回通信用バッファを構造体から毎回作成しているので前詰めとかは必要ありません。
また、構造体の一部分を除き、0である場合が多いのでビット数が増えることはまずありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- Excel(エクセル) 列の複数ある空白セルを飛ばして、セルに並べて表示したい 3 2023/02/12 16:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
コンボボックスのインデックス...
-
エクセルでXY座標に並べられた...
-
配列の中の最大値とそのインデ...
-
Excel2010のinputboxで複数デー...
-
C言語 ポインタと配列
-
VB6のメモリ解放に関して
-
Excelマクロ:配列データからグ...
-
.NET 文字コードの変換
-
Segmentation Fault (メモリ制限?)
-
エクセルVBAで実行時エラー7、...
-
複数のtextboxの処理を一括で行...
-
ReDim PreserveよりもReDimが遅い
-
Redim とEraseの違いは?
-
配列の初期化に時間がかかりま...
-
CheckBoxの配列化
-
COBOLの基本的な事なので...
-
C#でbyte配列から画像を表示さ...
-
EXCEL VBA 配列デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
Excel2010のinputboxで複数デー...
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
配列のペースト出力結果の書式...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
VBAで配列引数を値渡しできない...
-
C++で作成したDLLにVBAから配列...
-
構造体配列の特定のメンバーをF...
-
OutOfMemoryExceptionの回避策...
-
大量の変数を定義するにはどう...
-
VBAでMODE関数をつくる
-
VBScriptでCSVファイルを読み出...
-
定数配列の書き方
-
Segmentation Fault (メモリ制限?)
-
Excelのメモリ(配列)の上限は2G...
-
Redim とEraseの違いは?
-
CheckBoxの配列化
-
配列の中の最大値とそのインデ...
おすすめ情報