問題タブ [bitstream]
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.
c - ビットストリームの書き方
Cを使用してビットストリームにデータを書き込むことを考えています。2つの方法が思い浮かびます。1 つは、可変ビット長のシンボルを連続したビット シーケンスに連結することですが、この方法では、私のデコーダーはおそらく、これらのシンボルをこの連続したビット ストリームから分離するのに苦労するでしょう。もう 1 つの方法は、どのシンボルに対して同量のビットを分配することです。この方法では、デコーダーは元のデータを簡単に復元できますが、シンボルが異なる値を持ち、ビット ストリームに多くのビットが含まれるため、ビットの無駄が生じる可能性があります。ゼロ(私が推測するこの無駄なビット)。
私が何をすべきかヒントはありますか?
私はプログラミングが初めてです。どんな助けでも大歓迎です。
c# - Java ソケット サーバーとクライアント ソケットの c# の問題
クライアントの C# ソケットと Java サーバー ソケットとの通信に問題があります。問題は、応答を読み取ろうとしたときに発生しました。私のコードはこれです:
コード行で
クライアントがハングします。アプリケーションを停止する必要があります。ソケットサーバーが応答していないようです。ソケット サーバーの仕様は、BitStream を送受信することです。
file - wav、mp3 ファイルのビットストリームの詳細
wav / mp3 ファイルの各バイトの意味について知りたいです。しかし、グーグルからn番目を見つけてください...そのような情報をどこで見つけることができるか知っている人はいますか? (事実、ビットストリームレベルのすべてのタイプのマルチメディアファイルを知りたいです)
haskell - バイト文字列から任意のビット スライスを取得する
Bytestring
レイジーを使用してビット ストリームを表現したいと考えています。このストリームからビットの任意のスライスを効率的に取得できる必要があります。たとえば、長さが10 の があり、元の からビット 24 ~ 36 で構成されるByteString
新しい をスライスしたいとします。ByteString
ByteString
問題は、ByteStrings
が の配列であるWord8
ため、8 の倍数ではない範囲を取得するのが難しいことです。私が思いついた最高のものは、 and を使用Data.Binary
したこれData.Binary.Bits
です。get32BitRange
特に範囲<= 32用であることに注意してください。
アルゴリズムは次のとおりです。
Word8
必要なビットを含む最初のインデックスを見つけるByteString
からそのインデックスまでドロップ- ビット範囲の下限が 8 の倍数でない場合、先頭に余分なビットがある
Word8
ため、それらをスキップします。 - (hi - lo) ビットを取得し、a に格納します。
Word32
- それをに入れ
Word32
ますByteString
からビットの任意のスライスを取得するより効率的な方法はありByteString
ますか?
編集:これはより効率的なバージョンです
bit-manipulation - ビットストリーム レクサー ジェネレーター
ビット指向のパケット形式がいくつかあります。多くのかなり複雑な字句解析器を手動で記述するのではなく、ビットレベルの字句解析器ジェネレーター、つまり flex/lex のビット指向バージョンを探しています。明らかに、そのままCを書くこともできましたが、そのようなビットレベルのレクサージェネレーターが存在するかどうか疑問に思っていました。簡単な Google の後、いくつかのメディア デコーダーなどを見つけましたが、メディア ファイルではなく、ネットワーク パケットを解析しています。
または、ビット指向のメイドでフレックスを実行する方法はありますか?
java - javazoom のプレーヤーの使用に関する問題
JLayer Class Player を使用して mp3 ファイルを再生しようとしています。スレッドを開始した後
myPlayer.play()
、曲の最初の数百ミリ秒を聞くことができ、その後プレーヤーが中断し、次のエラー メッセージが表示されます。
インターネットで解決策を検索したところ、特定の .mp3 ファイルの問題が原因でこのエラーが発生する可能性があることを読みましたが、.wav ファイルまたは .wma ファイルは受け入れられませんでした。プレーヤーを動作させる方法を知っている人はいますか? 前もって感謝します
bit-manipulation - 多くのマスクに従って 1 つのビットストリームを分割する効率的な方法は?
いくつかのマスクに従って、1 つのビットストリームを多数に分割できるInverse Multiplexerを作成する実験を行っています。
アイデア例はこちら
これは 24 ビット ストリームで、各文字が 1 ビットを表します。
3 つのマスクが与えられた場合、すべてのマスクに共通のビットはありません。& 一緒にすると [1,1,1,1,1,1,1,1] になります。
これらのマスクを次のようにストリームに適用します
したがって、元のビットストリームは次のように 3 つのビットストリームに分割されます。
上記は単なる例です。特定のビットストリームに任意の数のマスクを適用する必要があります。マスクは相互に保証されており、ゼロのOR
結果があります。AND
すべてのマスクに適用すると、ONE の結果が得られます。すべてのマスクは同じ長さです。
私は、基本的にループ内でビットを 1 つずつシフトするアイデアを力ずくで実行するために、愚かなバージョンを作成しました。それは確かに効率的ではないと思いました。
私はこれを調べましたhttp://graphics.stanford.edu/~seander/bithacks.html
全く分からない。これを改善する方法を知っている人はいますか?(x86 マシン上)
c - C プログラムと VHDL ビットストリームを「make」経由で (つまり、Makefile を使用して) マージします。
Digilent Nexys II (Spartan 3E) 開発ボードで Gadget Factory にある VHDL AVR8 ソフト プロセッサをテストしようとしています。プロジェクトには、C (またはその他の) ソフトウェア プログラムをコンパイルして FPGA ビットストリームとマージするための Makefile が含まれているため、ソフトウェアを反復するたびに HDL を再合成する必要はありません。
「make」を実行すると、data2mem に関連する次のエラーが表示されます。
VHDL プロジェクト ファイルを含む同じディレクトリで「make」を実行していますが、そのディレクトリには空白の「main.bit」ファイルさえあります。
ここで何が起こっているかについて誰か考えがありますか? 空の「main.bit」ファイルを特定の方法でフォーマットする必要がありますか、それとも別の場所に配置する必要がありますか?
以下は、私の Makefile へのリンクです。
注意すべきその他の情報: ソフトウェアを FPGA ビットストリーム ファイルとマージするという特定の目的は言うまでもなく、一般的に Makefile を使用するのは初めてです。また、コマンドプロンプトでWindows 7マシンでこれを試みています。
前もって感謝します。
c - 効率的な C BitStream の実装
私は現在、純粋な C で効率的な BitStream を実装するためのさまざまな可能な戦略を研究しています。これは、さまざまなビットベースの圧縮アルゴリズムを実装するために必要です。ただし、このトピックに関する文献はあまり見つけられず、見つけることができる良い例はあまりないようです。
これが私が探しているものです:
- 関数呼び出しを避けるためのマクロベースの実装
- BitStream との間で「n」個のビットを読み書きする関数。
- 一般的なものよりも最適化された、5ビットなどの特定のビット数を読み書きする関数。
私は次のことについて疑問に思っています:
- BitStream で保持する必要がある変数。BYTE ポインター、バイト位置、現在のバイトのビット インデックス、現在のバイトに残っているビット数などがあります。
- 維持する変数の数を減らす方法。変数が多ければ多いほど、更新する必要のある変数も多くなります。
- 単一の読み取り/書き込み操作のコンテキストで、中間/一時変数を最小限に抑える方法。
- 操作を BYTE レベルで行うか、UINT16 レベルまたは UINT32 レベルで行う必要があるか。おそらく、ビットを UINT32 に蓄積し、それがいっぱいになったときにバイトを書き込む (またはフラッシュ操作で書き込みが完了したときに) バイトごとにすべてを行うよりもはるかに高速です。
- できるだけループを避けるにはどうすればよいでしょうか。理想的には、BitStream に書き込むビット数をループすることは絶対に避けるべきです。
これはやり過ぎに見えるかもしれませんが、圧縮に関連する残りのコードが非常に最適化されている場合、BitStream の部分がすべてを台無しにしているように見えます。たとえば、画像圧縮コードで SIMD CPU 命令を使用してエンコード プロセスの一部を最適化するアセンブリ ルーチンを目にすることは珍しくありませんが、最後のステップは BitStream への書き込みです。
アイデア、参照、誰か? ありがとうございました!
java - 次のコードのエラーを解決する方法
文字列 a に対応するビット ストリームを生成し、ビット ストリーム内の特定のビットを反転するこのコードを記述しました。変数 cc は、コード スニペットの前の処理で整数値を取得します。
ただし、次の行で Array Index Out Of Bounds Exception が発生します。
考えられる原因は何ですか?