カテゴリー
C++ DICOM-XA プログラミング (Programming)

JPEGハフマン・テーブル – 解読実践(11)

何か C++の言語仕様に対して根本的に間違っていたような気がします。Webにアクセスしてもう一度考え直しました。前回のプログラム・パーツを以下のように書き換えました

typedef unsigned char u_char;  // u_char型の宣言
typedef struct {
  int HuffBit;  // ハフマン符号のビット長
  int HuffCode; // ハフマン符号
  int HuffVal;  // ハフマン符号の意味する値
} HUFFTAB;   // これでHUFFTABという型を宣言した

u_char BITS[16];  // それぞれのビット長のハフマン符号がいくつあるか
   // 常に16バイトなので静的に配列確保した

// データのセット 実際のプログラムではファイルから読み込む
for (int i=0; i<16; i++) { // データをセット
  BITS[i] = 0x00;
}
BITS[1] = 0x01; BITS[2] = 0x05; BITS[3] = 0x01;
BITS[4] = 0x01; BITS[5] = 0x01; BITS[6] = 0x01; 
BITS[7] = 0x01; BITS[8] = 0x01;

int huffElementNo = 0;
for (int i=0; i<16; i++) {
   huffElementNo += BITS[i]; // これでハフマン符号語の総数を求める
}
//
// ハフマンテーブル領域の動的確保
HUFFTAB *ht = new HUFFTAB[huffElementNo]; 
// これでハフマン表の領域が確保された

これで良いのですよ 今度は間違いない、と確信しています

作成者: (KAMAKURA & SAPPORO)Dr_Radialist

Expert Interventional Cardiologist and Amateur Computer Programmer.

Winner for Master Clinical Operator Award in TCT 2019.
Winner for Ethica Award in EuroPCR 2015.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です