問題タブ [huffman-code]

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 投票する
2 に答える
11181 参照

algorithm - ハフマン符号化-ヘッダーとEOF

現在、Javaでハフマンアルゴリズムに基づくプログラムの実装に取り​​組んでおり、エンコードされたコンテンツをファイルに出力する必要がある段階にあります。デコードに必要なヘッダーとeofを実装する方法について少し混乱しています。現時点での私のヘッダーには、入力ファイルとその頻度から発生するすべての一意の値がありますが、一部の記事では、0または1でノードを表し、次に頻度を表します(少し戸惑っています)シンボルが何であるかを述べていないので)。

また、私が理解しているEOFの場合、シンボルのようにエンコードして読み取られ、デコードされますが、どのような値を使用できるのかわかりません。重みを1にする必要があることはわかっていますが、実際にファイルに含まれないようにする方法がわかりませんでした。

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

java - ビットの文字列表現をバイトに変換する

ファイル圧縮について学び始めたばかりで、ちょっとした障害に遭遇しました。「プログラム」などの文字列を圧縮されたバイナリ表現としてエンコードするアプリケーションがあります"010100111111011000"(これはまだ文字列として保存されていることに注意してください)。

これを を使用してファイル システムに書き込む必要がありますFileOutputStream。問題は、文字列 "010100111111011000" をbyte[]/ bytes に変換してファイル システムに書き込む方法FileOutputStreamです。

私は以前にビット/バイトを扱ったことがないので、ここで行き止まりになっています。

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

c - 宛先文字列が初期化されていない場合、strcpy の動作が異なる

ハフマンデコーダーを作成しようとしてCで作業しています。このコードは、codearray が初期化されていない場合にのみ機能します。それ以外の場合は、セグメンテーション エラーが発生します。ただし、そのようにすると、valgrind は codearray が初期化されていないと文句を言います。私はdddでそれを経験しましたが、strcpyが呼び出されるとセグメンテーション違反が発生し、その理由がわかりません。

呼び出し関数は次のとおりです。

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

huffman-code - 基数 3 のハフマン符号化の方法

ハフマン エンコーディングを実装するプログラムに問題があります。基数 2 では、二分木を使用して符号語を格納していますが、基数 3 の処理方法がわかりません。三分木を使用しようとしていますが、三分木で実装する方法がわかりません。 0,1,2 シンボルを追加するには...

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

huffman-code - ハフマン圧縮を行うときにビットをパックする方法は?

私はハフマン圧縮/解凍を実行するプログラムを実装しています(学習/楽しむために、既存のライブラリ/プログラムを使用したくありません)。

なんとか圧縮3を作成できたので、すべての文字とそれぞれの圧縮表現をビット単位で表したテーブルがあります。例えば:

a = 0010 b = 01101 c = 0011 d = 1101 e = 101

今の私の考えは、ビットをコンテナ(たとえば、charまたはint変数)に格納してから、それらをファイルに出力することです。

ビット演算を使用してビットをcharまたはintにパック/アンパックする方法を知っています。しかし、私が直面している問題は、圧縮バージョンのビット数が、使用可能なビット数と一致しないことです。

Suppose I want to compress the string "abc" using the table above. I would start by compressing 'a', so packing 0010 into a char variable. Next I would compress 'b', but that requires 5 bits, and I only have 4 bits left on my char variable. I could use another variable, but it would become a mess to keep track what variable is using how many bits.

Using int would give me 32 bits to work with, but the same problem would happen once I get close to the limit.

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

compression - JPEGでのハフマン符号化

これは私のJPEG画像の16進コンテンツです(画像にFFC4マーカーをマークしました)。ご覧のとおり、バイト0x01の後に値0xA2があります。標準では、0x10の次の16バイトは、各長さのコードの数を示しているため、これはどのように可能でしょうか。1ビットでその数のコードを持つことは不可能です。私が間違っている? JPEG16進コンテンツ

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

assembly - ハフマン アルゴリズム アセンブリ

ハフマンアルゴリズムを使用してtxtファイルを圧縮/解凍するプログラムを作成する必要があります

私はそれを書きましたが、バッファサイズよりも文字数が少ないファイルではうまく機能しますが、文字数が多いファイルでは機能しません。

私の問題は、圧縮バッファーと解凍バッファーをインターフェースすることです。

そのため、圧縮によって書き込まれたバイト数 (ツリーを通過する 1 と 0 を含む) が、解凍によって読み取られたバイト数と異なる場合、それは機能しません。たとえば、圧縮のバッファーが 200 を書き込む場合、正確に 200 バイトを読み取るには解凍のバッファーが必要です。

解凍のサイズを 200 に設定すると、どこかで圧縮が 200 を書き込み、他の時間は 200 未満またはそれ以上になります。

毎回圧縮によって書き込まれたバイト数を追跡​​し、それを解凍部分に送信する方法を何か提案できますか?

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

assembly - 8086-コマンドライン引数を配列に格納する

dos 8086(ライブラリを使用しない16ビットtasmまたはmasm)のハフマンアルゴリズムを使用してエンコード/デコード.COMプログラムを作成しており、2つのコマンドライン引数(inputfilenameとoutputfilename)を配列に格納して読み取る必要があります。入力ファイル、ハフマンエンコーディングを適用し、出力ファイルに書き込みます。

それらはアドレス80hに格納されていることを読みました。ここで、80hには引数の長さが含まれ、81h以降は引数自体が含まれます。したがって、最初の引数をinarg(および2番目の引数はまだ作業を開始していないoutarg)に格納するという考え方です。サブルーチン9での割り込み21h呼び出しの目的は、それが正しいかどうかを確認することでした。(そうではありません)

これが私がこれまでに持っているものです:

次の関連データを使用します。

区切り文字を考慮せずに基本から始め、最初の引数(入力ファイル名であるinarg)のみを取得しようとしました。

そしてそれはうまくいかないので、私は間違いなく何か間違ったことをしています。これは経験豊富なプログラマーにとっては完全に混乱しているように見えるかもしれませんが、それはインターネットで見つけたリソースをうまく追跡しようとしなかったため、これまでに理解した概念のみを使用して実装に切り替えたためです。どんな助けでも大歓迎です、ありがとう。

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

jpeg - jpegファイル、SOSマーカーの解析

jpegファイルの解析に問題があります。SOS(スキャン開始)マーカーを押すと、バイト数が少ないのでわかりません。次の図では、SOSマーカーの後に、ヘッダーの長さが2バイトあります(画像のLs部分)。しかし、画像上の残りのデータは何を意味し(たとえば、Ns、Cs1など)、純粋なデータはどこから始まりますか? SOSjpegファイルヘッダー

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

c# - DNA配列からなるアルファベットを圧縮する方法

ハフマンおよび適応形ハフマンアルゴリズムではなく、圧縮技術を使用してDNAシーケンスを圧縮したいのですが、プログラミング言語としてc#を使用しています。誰かが私をアルゴリズムに導くことができますか?注:可逆圧縮が必要です