#include <iostream>
#include <string>
using namespace std;
std::string integer_to_hex(const int input)
{
static const char* const lut = "0123456789ABCDEF";
const size_t len = sizeof(int);
// Convert integer into bytes
unsigned char byte_array[len];
byte_array[0] = (input & 255);
byte_array[1] = ((input >> 8) & 255);
byte_array[2] = ((input >> 16) & 255);
byte_array[3] = ((input >> 24) & 255);
std::string output;
// Each character in hex takes 2 bytes therefore, double space.
output.reserve(2 * len);
for (size_t i = 0; i < sizeof(int); ++i)
{
// Shift four places to right and get the first hex byte
output.push_back(lut[byte_array[i] >> 4]);
// Get the first four bites and use it to get hex index
output.push_back(lut[byte_array[i] & 15]);
// insert a space character to separate hex characters
output.push_back(32);
}
return output;
}
int main() {
cout << integer_to_hex(1000) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RkOjpzdHJpbmcgaW50ZWdlcl90b19oZXgoY29uc3QgaW50IGlucHV0KQp7CglzdGF0aWMgY29uc3QgY2hhciogY29uc3QgbHV0ID0gIjAxMjM0NTY3ODlBQkNERUYiOwoJCgljb25zdCBzaXplX3QgbGVuID0gc2l6ZW9mKGludCk7CgoJLy8gQ29udmVydCBpbnRlZ2VyIGludG8gYnl0ZXMKCXVuc2lnbmVkIGNoYXIgYnl0ZV9hcnJheVtsZW5dOwoJYnl0ZV9hcnJheVswXSA9IChpbnB1dCAmIDI1NSk7CglieXRlX2FycmF5WzFdID0gKChpbnB1dCA+PiA4KSAmIDI1NSk7CglieXRlX2FycmF5WzJdID0gKChpbnB1dCA+PiAxNikgJiAyNTUpOwoJYnl0ZV9hcnJheVszXSA9ICgoaW5wdXQgPj4gMjQpICYgMjU1KTsKCglzdGQ6OnN0cmluZyBvdXRwdXQ7CgkKCS8vIEVhY2ggY2hhcmFjdGVyIGluIGhleCB0YWtlcyAyIGJ5dGVzIHRoZXJlZm9yZSwgZG91YmxlIHNwYWNlLgoJb3V0cHV0LnJlc2VydmUoMiAqIGxlbik7CgkKCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGludCk7ICsraSkKCXsJCQoJCS8vIFNoaWZ0IGZvdXIgcGxhY2VzIHRvIHJpZ2h0IGFuZCBnZXQgdGhlIGZpcnN0IGhleCBieXRlCgkJb3V0cHV0LnB1c2hfYmFjayhsdXRbYnl0ZV9hcnJheVtpXSA+PiA0XSk7CgoJCS8vIEdldCB0aGUgZmlyc3QgZm91ciBiaXRlcyBhbmQgdXNlIGl0IHRvIGdldCBoZXggaW5kZXgKCQlvdXRwdXQucHVzaF9iYWNrKGx1dFtieXRlX2FycmF5W2ldICYgMTVdKTsKCgkJLy8gaW5zZXJ0IGEgc3BhY2UgY2hhcmFjdGVyIHRvIHNlcGFyYXRlIGhleCBjaGFyYWN0ZXJzCgkJb3V0cHV0LnB1c2hfYmFjaygzMik7Cgl9CglyZXR1cm4gb3V0cHV0Owp9CgppbnQgbWFpbigpIHsKCWNvdXQgPDwgaW50ZWdlcl90b19oZXgoMTAwMCkgPDwgZW5kbDsKCXJldHVybiAwOwp9