問題タブ [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.
jpeg - (Photoshop で作成された?) JPG ファイルのハフマン コーディング ビットストリームのこれらのパターンはなぜですか?
これは、16 進エディタで JPG ファイルを見たときに、JPG ファイルに見られるいくつかのパターンについての好奇心からの質問です。JPEG ファイル形式に関する質問だと思います。なぜこの部分は他の部分と同じように「ランダム ノイズ」ではないのですか (ハフマン コーディングなど)。
ここに行きます:
この 136 ビット (17 バイト) のパターンは、Adobe Photoshop によって生成されたいくつかの JPG ファイルに表示されます (これらを生成するアプリケーションがPhotoshopだけかどうかはわかりません)。
1 つのファイルに複数の場所があり、1 回の反復だけの場合もあれば、8 回または 12 回のように繰り返されて、1088 ビットまたは 1632 ビットのブロックのブロックを構成する場合もあります。正確には、実際には 68 ビットのパターンであり、2 回以上繰り返されます。
AFAIKは、JPGファイル構造について少し読んで、これを16進数で確認して、JPGファイル構造の先頭がFF xxでマークされていることを確認しました。これらの 68 ビット パターンの直前にも直後にも、そのような FF xx 構造体マーカーはありません。
Breakpoint Hex Workshop を使用すると、[データ ビジュアライザー] ウィンドウでこれらのパターンを簡単に見つけることができます。ハフマン ビットストリームの残りの部分は「ノイズ」のように見えますが、突然、明確なパターンを示すブロックが現れます。
また..これがどれほど関連性があるかはわかりませんが..:
以前、CR2 ファイル、つまり Canon RAW ファイルにもこのようなタイプのパターンがあることに気付きました。ただし、ここではパターンははるかに単純な 40 ビットのものでした。
スペースを調整すると、次のようになります。
ご覧のとおり、これは実際には5 ビットの繰り返しパターンであり、CR2 ファイルに出現する場所ごとに数百回繰り返されています。CR2 ファイル形式も圧縮ファイルですが、ロスレスです。もう一度言いますが、私が正しく理解していれば、JPG のハフマン コーディングも一種のロスレス「圧縮」です。
圧縮されたストリームに、「無駄な」ビットのこれらのパターンがあることは非常に奇妙です..
ここに JPG ファイルの 1 つをアップロードしましたhttp://i.imgur.com/t0mi7vo.jpg - これは、フォルダー内のいくつかのファイルの単純なスクリーンショットです。ハフマン コード ビットストリームは、オフセット 0x0000027C から最後まで続きます。たとえば、オフセット 0x0001604A に、繰り返しパターンのインスタンスの 1 つが表示される場合があります。
scalability - JSVM で AVC ビットストリームのトレース ファイルを生成するにはどうすればよいですか?
私はこの質問に約1か月間行き詰まりました。
JSVM で AVC ビットストリームのトレース ファイルを生成したいと考えています。常に次のように表示されます。
親切に私を助けてください。
エルヴィン
c - 可変長ハフマン符号のビットストリーム - ファイルへの書き込み方法は?
私は C でハフマン コーディング/デコード プロジェクトに取り組んでおり、アルゴリズムがハフマン ツリーに関する情報を格納し、デコード中にツリーを再構築し、可変長コードを使用して元の入力ファイルに解凍する方法をよく理解しています。 .
圧縮ファイルに書き込むとき、一意の頻度を含む 256 個の 4 バイト整数のテーブルを出力します。また、EOF を処理する方法を考え出す必要があることもわかっています。これについては後で心配します。
私の質問は、可変長コードのストリームを fwrite の一連の 1 バイト反復に書き込むために必要なビット単位の操作をどのように完了するべきかということです。
次の(架空の)コードを作成した場合:
「abcd」のビットストリームは次のようになります。
このストリームを書き込み可能なバイトに「切り刻む」ために、いくつかのビット単位の操作を使用する必要があることはわかっています。
コードの長さに基づいて 8 つの異なるケースを作成する最初の試みはうまくいかず、困惑しています。ファイルへの書き込み時に可変長コードを処理する簡単な方法はありますか?
ありがとうございました
c++ - ビットストリームの解析とエンディアン
ビットストリームを解析しようとしていますが、エンディアンを理解するのに苦労しています。私はバイト バッファを持っており、1 ビットから 8 ビットまでのさまざまな長さのビットフィールドを読み取ることができる必要があります。
私の問題は、バイトのエンディアンに関係しています。デバッガーでステップ実行すると、下位 4 ビットがバイトの上位部分にあるように見えます。つまり、最初の 2 ビットが 10 であると予想しているのですが (10 である必要があります)、デバッガーで確認すると、ビットストリームの最初のバイトは 0xA3 または 1010 0011 です。つまり、ビットが「正しい」順序であると仮定すると、最初の 2 ビットは実際には 11 (右から左へ読む) です。
ただし、ビットの順序が正しくなく、0x3A または 0011 1010 である必要がある場合、予想される最初の 2 ビットとして 10 があるように思われます。
ビット順の問題ではなく、MSb から LSb/LSb から MSb ではなく、ニブル順の問題であるように見えるため、これは私を混乱させます。これはどのように起こりますか?それがファイルから出てきた方法のようです。これは無効なビットストリームである可能性がありますが、16 進エディタでファイルを読み取るときに、ニブルが「間違った」順序で表示されるのを見たことがあります。
私はちょうど混乱していて、何が起こっているのかを理解するのに助けが欲しい. 私はこのレベルで物事を扱うことはあまりありません。
java - バイナリファイルに整数の行列を保存/読み取り、それらを読み取ります
整数の行列をバイナリ ファイルに保存して読み返す方法を知りたいです。
マトリックスは次のようになります
これをバイナリ形式で保存できますが、それらを再度読み取って各行を区別できるようにする方法がわかりません(マトリックスには4つ以上の列がある可能性があり、これをランダムに選択しました)。
ところで、上記の行列の場合、結果のファイルは16 ビットになりますか?
send - FPGA ボードでビットストリームを送信する
FPGA ボードでビットストリームを送信できる必要があります。
アルテラ Cyclone III 開発ボードを使用しています。ビットストリームを送信するなどの Quartus のオプションを探していますが、ソフトウェアでもインターネットでも見つかりませんでした。