Question: Description : In this lab you will write a program in C that will contain two functions, setlsbs () and getlsbs (). These functions will

Description: In this lab you will write a program in C that will contain two functions, setlsbs() and getlsbs(). These functions will use bitwise operators to embed and extract "hidden" bits in a character array.

Specifications: Your first function:

void setlsbs(unsigned char *p, unsigned char b0)

will take as parameters, an array p of eight bytes (unsigned char) and a byte byte0. It will replace the least significant bits (LSBs) of p by the bits of byte0. In other words, if the binary representation of byte0 isb7b6b5b4b3b2b1b0, you should replace the LSB of p[0] by b0, the LSB of p[1] by b1, ... , and the LSB of p[7] by b7.

Your second function:

unsigned char getlsbs(unsigned char *p)

will take an array p of eight bytes (unsigned char) and return a byte byte0 which is created by combining the LSBs of p. That is, your function should combine the least significant bits bi of p[i] to return a byteb7b6b5b4b3b2b1b0.

Write a program to test your functions as follows:

-Obtain a random number seed from the command line of your program using command line arguments.

-Initialize an array p of 8 unsigned char with random numbers from 0 to 255

-Initialize a separate unsigned character byte0 with a random number.

-Print the values in the array p as well as the value for byte0.

-Print the values in decimal format as well as binary format (use macros defined below)

-Call setlsbs() using p and byte0 as parameters

-After the call to setlsbs() is completed, print the modified values of the array p.

-Print the values in decimal format as well as binary format (use macros defined below)

-Use the modified array p as a parameter to getlsbs()

-Print the return value of the call to getlsbs(). The returned value should match the original value for byte0

-Print the value in decimal format as well as binary format (use macros defined below)

Macros: You may use the following macros to print the binary representation of unsigned character variables:

#define BYTETOBINARYPATTERN "%d%d%d%d%d%d%d%d"

#define BYTETOBINARY(byte) \ (byte & 0x80 ? 1 : 0), \ (byte & 0x40 ? 1 : 0), \ (byte & 0x20 ? 1 : 0), \ (byte & 0x10 ? 1 : 0), \ (byte & 0x08 ? 1 : 0), \ (byte & 0x04 ? 1 : 0), \ (byte & 0x02 ? 1 : 0), \ (byte & 0x01 ? 1 : 0)

#define PRINTBIN(x) printf(BYTETOBINARYPATTERN, BYTETOBINARY(x));

You can use the macros in a manner similar to the code below: unsigned char num =173;

PRINTBIN(num); printf(" ");

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!