私は C 演算とビット演算の両方に比較的慣れておらず、クラスで与えられた課題に問題があります。コードの大部分は私に渡されましたが、ビット演算に関連する部分を理解するのに問題がありました。この部分を理解したら、私は金になります。誰かが助けてくれることを願っています!
これが私の課題からの抜粋です:
1 バイトの情報を隠すには、画像の 8 バイトを使用する必要があります (カバー画像の LSB のみを変更できることに注意してください)。カバー画像の残りの 16 バイトを使用して、b.size の 16 ビット (バイナリ データのサイズ フィールドの最下位 2 バイト) を埋め込みます。カバーの次の 32 バイトは、ファイル拡張子を埋め込むために使用されます。その後、8*b.size バイトを使用してペイロード (b.data) を埋め込みます。
このプログラムが行っているのは画像の速記であり、作成したファイルのデータを使用して、読み取った画像の最下位ビットを変更する必要があります。私が言ったように、そのためのすべてのコードはすでに書かれています。LSB を変更する方法がわかりません。どんな助けでも大歓迎です!!!
LSB の再フォーマットに使用する関数は次のとおりです。
byte getlsbs(byte *b);
void setlsbs(byte *b, byte b0);
これは私がこれまでに試みたものです:
/* In main function */
b0 = getlsbs(&img.gray[0])
/* Passing arguments */
byte getlsbs(byte *b)
{
byte b0;
b0[0] = b >> 8;
return b0;
}
私は正直なところ、完全に途方に暮れています。私は一晩中これに取り組んできましたが、まだほとんど前進していません。