Hey everyone....Im trying to learn about unions and Im finding it hard too grasp with the reference I have...Im trying to write this program that uses a union to combine a long int and a struct with four members...I first have to ask a user to enter a hex value in and the program is to display the user value in both hex and decimal...then using the structure members, display the user value one byte at a time in both hex and decimal..my question is that if I read in a long int(4bytes I hope) but it only takes in the first 4 hex values(2 bytes) and ignores everything before? I have very limited knowledge and have been playing/trying to understand union manipulations...and I could really use a boost to get me to where (and hopefully how) to read individual bytes(I can read the LSB in hex but not long int(%ld(right))...thanks for lookin...


Code:
*
*	Program Description:   This program asks the user to input an integer
*                         value in Hex and displays it in hex and decimal
*                         form.Then each byte of the structure is displayed
*                         in decimal form.
*
*
*/
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
struct bytes
{
	unsigned char byte1;
	unsigned char byte2;
	unsigned char byte3;
	unsigned char byte4;
};

 union master
{
	long  value;
	struct bytes complete;


}num;


void intro(void);
char ragain(void);
void signoff(void);
void pause(void);


int main(void)
{

	char  input = 'y';



	clrscr();
	intro();
	while(input == 'Y' || input == 'y')
	{
		fflush(stdin);
		printf("please enter a  hexvalue..(ie e34f2)");
		scanf("%xH",&num.value);
		printf("the value is:%ld\n",num.value);

		printf("the lsb is %xH dec is ?\n",num.complete.byte1);
		input=ragain();
	}
	signoff();
	pause();

	return 0;

} /*	End of Main		*/