問題タブ [bit-fields]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
892 参照

c - Cビットフィールドのメモリ使用量

次の形式でいくつかのデータを処理する必要があります。

合計で最大9バイトになるようにしました。
しかし、そうではありません。その構造体の9バイトをファイルに書き込んで読み戻すと、すべてのデータが復元されず、sizeof(data)16が返されます。
ここでの問題は何ですか。

0 投票する
5 に答える
4191 参照

c++ - スレッドセーフとビットフィールド

ビットフィールドがコンパイラに依存することは知っていますが、最新の g++ および Visual C++ 2010 を使用したビットフィールドのスレッド セーフに関するドキュメントは見つかりませんでした。

ビットフィールドメンバーの操作はアトミックですか?

0 投票する
6 に答える
2246 参照

c++ - バイトとビット フィールドの 2 つの引数を受け取り、フィールドの値をバイトで返す関数

このタスクを実行するコードをオンラインで見つけました。

ただし、これができない理由がわかりません。

これは機能しますか?なぜですか、そうでないのですか?より良い実装はありますか?

0 投票する
3 に答える
8563 参照

c++ - 異なるサイズのビットフィールドの比較

ビット単位の演算子(、など)を使用して、&サイズ|の異なる2つのビットフィールドを比較するとどうなりますか?

たとえば、:と比較0 1 1 00 0 1 0 0 0 0 1ます。

または...

または...

または...

0 投票する
2 に答える
5215 参照

python - 整数から python bitarray を作成する - 奇妙な結果です!

Python で bitarray パッケージを使い始めたばかりで、整数から bitarray を作成しようとすると、非常に混乱する結果が得られます。

なぜこれが起こるのか誰にも分かりませんか??

また、intからbitarrayを作成するより良い方法は何ですか? これは機能しますが、文字列変換は奇妙な方法のようです...

編集:私はints からビット文字列を取得する簡単な方法を持っているbitstringに切り替えることになりました:

0 投票する
4 に答える
2168 参照

c++ - 0xFFFFFFFF を使用して、すべてのビットを 32 ビット型に設定する信頼できる方法はありますか?

Windows SDK でコンパイルされる次のコードがあります。

DragQueryFileW()この署名はどこにありますか:

そして、UINT次のように SDK ヘッダーのどこかに定義されています。

int確かに32ビットのプラットフォーム向け。いつものように、 のような型UINTは、システムのビット数に依存しない固定幅を持つことを意図しているため、同じコードを他のプラットフォームで再コンパイルする必要がある場合は、DragQueryFileW()何らかの形で再実装され、適切typedefUINT32-ビット符号なしタイプ。

現在、定数を見て、それは移植できないマジック番号であり、代わりに使用する必要0xFFFFFFFFがあると不平を言う静的分析ツールがあります。もちろん、移植性は良好ですが、移植する場合でも型は 32 ビットのままで、定数は問題ないため、ここで定数を使用することがどのように問題になるかわかりません。-1-10xFFFFFFFF

このシナリオでは、すべてのビットを安全かつポータブルに設定する0xFFFFFFFF代わりに使用していますか?-1

0 投票する
1 に答える
12196 参照

c - GCC コンパイラで構造体のビット順序を強制する方法は?

構造体のパッキングのビット順序を決定できる GCC C コンパイラ ディレクティブがあるかどうか疑問に思っていました。次のようなもの:

そのような必要性の理論的根拠は、次の構造を持っていることです。

この構造では、コンパイラに次のようにパックしてもらいたいと思います。

GCCがそれを行う方法ではなく:

規定のハードウェア アドレスに従ってビット オフセットを計算する構造を持つ巨大なヘッダー ファイルを持つ MCU を扱っています。製造元が提供するファイルのすべてのフィールドを反転しようとする前に、GCC C コンパイラにビット オーダー スワップを行うコンパイラ ディレクティブがあることを願っています。

0 投票する
2 に答える
2016 参照

c++ - C++ で int をビットフィールドにパックする

一部のコードを ASM から C++ に変換しています。ASM は単純に次のようになります。

構造体は次のようになります。

C++ で構造体を埋める簡単な 1 行 2 行の方法はありますか? これまでのところ、私は使用しています:

これで問題なく動作しますが、これらのビットフィールド構造体の 9 ~ 10 個を埋める必要があり、そのうちのいくつかには 30 個の奇数フィールドがあります。したがって、このようにすると、10 行のコードが 100 行以上になることになりますが、これは明らかにそれほど素晴らしいことではありません。

では、C++ で ASM を複製する簡単でクリーンな方法はありますか?

もちろん、「miscStruct = CPUInfo[0];」を試しました。しかし、C++ は残念ながらそれを好みません。:(

..そして、構造体を編集できません

0 投票する
5 に答える
447 参照

c - この構造のサイズが4バイトになる方法

私はビットフィールドを含む構造を持っています。私によると2バイトであることがわかりますが、4であることがわかります。スタックオーバーフローでこれに関連するいくつかの質問を読みましたが、私の問題に関連することはできません。これは私が持っている構造です

int型がメモリ境界にある必要がある場合、出力は8バイトである必要がありますが、4バイトを示していますか?

0 投票する
2 に答える
6546 参照

python - バイナリデータ構造の読み取り/書き込み中にビットフィールドにアクセスする

バイナリ形式のパーサーを書いています。このバイナリ形式には、さまざまなフィールドサイズ(通常は50〜100の範囲)を含むバイナリ形式のさまざまなテーブルが含まれます。

これらの構造のほとんどはビットフィールドを持ち、Cで表されると次のようになります。

structモジュールに出くわしましたが、その最低解像度はビットではなくバイトであることに気付きました。それ以外の場合、モジュールはこの作業にほぼ適していました。

ビットフィールドがctypesを使用してサポートされていることは知っていますが、ここでビットフィールドを含むctypes構造体をインターフェースする方法がわかりません。

私の他のオプションは、ビットを自分で操作してバイトにフィードし、構造体モジュールで使用することです-しかし、そのような構造のタイプは50〜100に近いため、そのためのコードを書くとエラーが発生しやすくなります。このツールは大きなギガバイトのバイナリデータを解析するために使用される可能性があるため、効率についても心配しています。

ありがとう。