問題タブ [bitstring]
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.
python - ビットマップ/ビット文字列にパックされたバイトのASCII文字列を文字列に戻しますか?
各文字が元々符号なしバイトであったが、7 ビットとして格納されてから符号なしバイト配列にパックされるようにパックされた文字列があります。この文字列を Python で展開する簡単な方法を見つけようとしていますが、bitstring モジュールを使用する私が書いた関数はうまく機能しますが、非常に遅いです。このようなものはそれほど遅くないように思えますが、おそらく非常に非効率的にやっています...
これはおそらく些細なことのように思えますが、何を使用すればよいかわかりません。文字列をアンパックする関数が既に存在する可能性がありますか?
algorithm - ビット列のサイクル検出
長さ N(<=10^5) のバイナリ文字列が与えられた場合、文字列のサイクルの長さを見つけたいと思います。サイクルの長さは最大 1000 で、少なくとも 1です。
例:
110110110110 サイクルの長さは 3 (パターンの繰り返しは 110)
000000 サイクルの長さは 1 (パターンの繰り返しは 0)
1101101101 サイクルの長さは 3 (パターンの繰り返しは 110)
フロイドのサイクル検出アルゴリズムを理解しようとしましたが、この質問にどのように適用するか理解できません。
この問題を効率的に解決するにはどうすればよいですか? (O(NlogN)以上で実行されるアルゴリズムが必要です)。
python - Bitstring (1 と 0 の文字列) を numpy 配列に変換する
ビットの文字列を含む1列を含むpandas Dataframeがあります。'100100101'
. この文字列をnumpy配列に変換したい。
どうやってやるの?
編集:
使用する
でエラーが発生しますmodel.fit
:
マークされた回答のために私が思いついた私のケースで機能するソリューション:
python - BitString を ctypes バイト配列に変換するにはどうすればよいですか?
BitString と ctypes を使い始めたばかりで、バイナリ ファイルの一部がクラスに格納されstartdata
ています。BitArray
ここで、このデータを as 引数を取る C 関数にそのまま渡す必要があるunsigned char *
ため、最初に次のようなことを試みます。
最終的にこれを行うには:
startdata
これは機能しますが、作成したばかりの配列/バッファにバイトデータを割り当てるにはどうすればよいですか?
これは機能しません:
python - L/R SHIFT、L/R CIRC、AND、XOR、および OR を使用してビット文字列式を効果的に解析および評価する方法は?
クラスでは、LSHIFT、RSHIFT、LCIRC、RCIRC、AND、XOR、OR という基本的な関数から始めて、ビット文字列フリックについて学び始めました。その後、突然、ビット文字列式を解析して評価する Python プログラムを作成するタスクが与えられました。ビット文字列式を手作業で解決するのはかなり簡単だと思いますが、Python を使用してビット文字列式を効率的に解析および評価する方法をよく理解していません。以下に必要なすべての関数を定義しました。これらは単一演算子式 (つまり、LCIRC 4 0010) で機能しますが、今のところ、複数演算子式 (つまり、LCIRC 3 LCIRC 3 0010) を解析する方法に完全に行き詰まっています。
このプログラムは、次のような入力を受け取ることができる必要があります。
python - 遅いビット操作
長いビット文字列に対して多くのビット単位の操作を実行する Python ライブラリに取り組んでおり、その速度を最大化するビット文字列型を見つけたいと考えています。組み込みの Python int 型である numpy、bitstring、およびbitarrayを試してみましたが、驚くべきことに、ビット演算に関しては Python の int が圧倒的に勝っているようです。私がグーグルで調べたものはすべて、このようなベクトル化された操作ではnumpyがはるかに高速になるはずだと言っています。どういうわけか間違ってnumpyを使用していますか? Python の組み込みの int 型を実際に改善するために使用できる別の Python ライブラリはありますか?
結果:
編集:
Python の int/long に対する単一の操作が、numpy ビット配列全体に対するベクトル操作にどのように匹敵するかについて、多くの混乱があるようです。10,000 ビットの Python の int/long 値は、ビット マスクとして扱われる場合 (C/C++ で int や long と同じように & 演算子を使用)、長さ 10,000 の numpy bool 配列と直接比較できます。 2 つの異なる方法で表されますが、同じ数のビットが含まれます。numpy パック ビット配列、numpy int 配列、および他のライブラリのビット配列/文字列型の使用など、私が試した 10,000 ビットを表す他の方法にも同じことが当てはまります。それらはすべて、同じビットシーケンスで同じ関数を計算しているため、すべて比較可能です。ここで重要なのは、10,000 ビットすべてを表現できることと、それらに対してビット演算を実行できることです。
int_to_bits
Python の int/long 値が numpy bool 配列または numpy バイナリ値の int 配列と同じ情報を格納する方法についてまだ混乱している場合は、上記のコードの関数を参照してください。これは、Python int/long からビットを抽出する方法を示しています。これは、2 つの 10,000 ビット int に対して & 操作を実行することは、10,000 のブール値のリストまたは配列に対して要素ごとに実行することと基本的に同じであることを示しています。
c++ - ビットを読み取る API に必要なアドバイス
私は python-bitstring という素晴らしいプロジェクトを見つけました。C++ への移植はかなりの状況で非常に役立つと思います (確かに私のいくつかのプロジェクトでは)。
read/write/patch bytes メソッドを移植している間、まったく問題はありませんでした。Python を C++ に変換するのと同じくらい簡単でした。
とにかく、今私はビットメソッドに取り組んでいますが、その機能を表現する方法がよくわかりません.
たとえば、次のようなメソッドを作成したいとします。
この例のために、それが読み取り対象のデータ全体を保持するthis->data
メモリのチャンク ( ) であるとします。void *
したがって、このメソッドは、読み取るビット数とスキップするオプションのビット数を受け取ります。
そうすれば、位置 2 から位置 6 までのビットを読み取ることができます (この例では、リトルエンディアン/ビッグ エンディアンは忘れてください)。
1 バイトより小さい値は返せない (または返せるか?) ため、実際に 5 ビットを読み取ったとしても 8 が返されます。しかし、14 ビットを読み取って 1 をスキップするとどうなるでしょうか。これらのビットのみをより便利な方法で返すことができる他の方法はありますか?
たとえば、いくつかの一般的な状況について考えています。
- 最初の 14 ビットが「010101.....」と一致するかどうか
- 2 つのマッチ "00011010....." をスキップした後、次の 13 ビットを実行します。
- 最初の 5 ビットを読み取り、int/float に変換します
- 5 をスキップした後に 7 ビットを読み取り、それらを int/float に変換します
私の質問は、ビットの操作を簡単にするために (または少なくとも前述の状況で簡単に)、どのタイプのデータ/構造/メソッドを返す/公開する必要があるかということです。
c - PostgresのC言語関数でビット(n)またはビット可変(n)フィールドを返すにはどうすればよいですか?
質問はそれをすべて言います。Postgres の C 言語関数でビット文字列を返すにはどうすればよいですか?
python - 設定による for ループの順序の並べ替え
次の種類の構造/エントリを持つ配列を使用しています(量子情報ゲームのマスタープロジェクト用); 1 列目のエントリ{0,1}
、2 列目{0,1}
、3 列目{0,2**(d-1)}
、最後の列{0,d-1}
。については次のとおりですd=3
。
次の関数を使用して、この配列を構築しています。
今私ができるようにしたいのは、列のエントリがカウントを開始する順序を簡単に選択することです。(上段右列から左列)
たとえば、1 列目からカウントを開始し、次に 3 列目、4 列目、最後に 2 列目とします。for-loops
関数内を並べ替えることでこれを取得できます。
これにより、次のことが得られます。
関数内の for ループの順序を並べ替えることはできますが、すべての並べ替えをカバーするには 24 の異なるケースを作成する必要があります。一般的に、より良いものは何でしょうsolution/approach
か?