【发布时间】:2012-04-11 12:21:14
【问题描述】:
我对 C 和按位运算都比较陌生,而且我在完成课堂上的作业时遇到了麻烦。大部分代码已提供给我,但我一直在找出与按位运算有关的部分时遇到问题。一旦我弄清楚这部分,我会很高兴。希望有人能帮忙!
这是我作业的摘录:
您需要使用 8 个字节的图像来隐藏 1 个字节的信息(请记住,只能修改封面图像的 LSB)。您将使用封面图像的其余 16 个字节来嵌入 b.size 的 16 位(二进制数据的大小字段的两个最低有效字节),接下来的 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;
}
老实说,我完全不知所措。我整晚都在做这件事,但我仍然几乎没有取得进展。
【问题讨论】:
-
顺便说一句:stenography // steganography - 请更正您的帖子
-
我很抱歉;我并不是故意让它看起来像是我试图为我完成它。我尝试过的一切都失败了,因为我似乎无法理解按位运算。在我的大学生涯中,我从来没有和他们打过交道。
-
然后发布您尝试过的代码,以便人们可以解释您做错了什么。
-
到目前为止我所尝试的是将图像的每个字节传递给 getlsbs() 函数并附加一个数组。之后,我想尝试看看是否可以手动编辑值(可能在循环中),但我一直卡在这一点上。我尝试过的任何方法似乎都不起作用。
-
发布您尝试过的代码,然后将其添加到您的问题中。
标签: c bit-manipulation bitmask operations