This program reads integers and prints them in hexadecimal, using the shift and "and" operators to extract the relevant digits. Note: This requires knowledge of character arrays. The problems require use of functions.
// Read ints and print their hex representations // Note sizeof(int) returns number of bytes in an int. #include <iostream> using namespace std; void main() { int n; while (cin >> n) { cout << "decimal: " << n << endl; //--- Print hex with leading zeros cout << "hex : "; for (int i=2*sizeof(int) - 1; i>=0; i--) { cout << "0123456789ABCDEF"[((n >> i*4) & 0xF)]; } cout << endl << endl; } }
Here are some modifications that could be made to this code.
cout
.
A more general solution is to write the conversions
as functions which put their output into a character array as
c-strings. Write these conversions as functions with the following
prototypes:
void intToBinary(char result[], int n); void intToHex(char result[], int n); // A call might look like this: char binary[50]; // big enough to hold an int with spaces. . . . while (cin >> n) { intToBinary(binary, n); // produce binary character string. cout << binary << " has " < strlen(binary) << " digits." << endl; }There is a big difference between the hex conversion and the binary conversion. The hex conversion writes a char to cout while the binary conversion writes an int. It's necessary to put a char in the output array of the function of course.