From 4fc1abe8cbe2634b3e2186882b68c2e362c071c5 Mon Sep 17 00:00:00 2001 From: David Skoland Date: Thu, 5 Jan 2017 22:17:36 +0100 Subject: [PATCH] not going to list all the things i did --- encryption_functions.cpp | 0 encryption_functions.h | 4 ++ hex_functions.cpp | 83 ++++++++++++++++++++++++++++++++++++++++ hex_functions.h | 14 +++++++ 4 files changed, 101 insertions(+) create mode 100644 encryption_functions.cpp create mode 100644 encryption_functions.h create mode 100644 hex_functions.cpp create mode 100644 hex_functions.h diff --git a/encryption_functions.cpp b/encryption_functions.cpp new file mode 100644 index 0000000..e69de29 diff --git a/encryption_functions.h b/encryption_functions.h new file mode 100644 index 0000000..0a9cf2e --- /dev/null +++ b/encryption_functions.h @@ -0,0 +1,4 @@ +#ifndef ENCRYPTION_FUNCTIONS_H +#define ENCRYPTION_FUNCTIONS_H + +#endif // ENCRYPTION_FUNCTIONS_H diff --git a/hex_functions.cpp b/hex_functions.cpp new file mode 100644 index 0000000..9b1222e --- /dev/null +++ b/hex_functions.cpp @@ -0,0 +1,83 @@ +//WELCOME TO THE EXTREME GHETTO HEX CONVERSION KLUDGE BECAUSE I COULDNT MAKE ANYTHING ELSE WORK + +#include "hex_operations.h" + +namespace omni +{ + char halfword_to_hex_char(unsigned int input) + { + if (input > 127) + return 'F'; + + switch (input) + { + case 0: + return '0'; + case 1: + return '1'; + case 2: + return '2'; + case 3: + return '3'; + case 4: + return '4'; + case 5: + return '5'; + case 6: + return '6'; + case 7: + return '7'; + case 8: + return '8'; + case 9: + return '9'; + case 10: + return 'A'; + case 11: + return 'B'; + case 12: + return 'C'; + case 13: + return 'D'; + case 14: + return 'E'; + case 15: + return 'F'; + default: + return 'F'; + } + } + + std::string int_to_hex(unsigned int input) + { + if (input > 255) + return "FF"; + + std::bitset<8> whole_byte(input); + //240 represents 11110000, our needed bitmask + uint8_t left_mask_int = 240; + std::bitset<8> left_mask(left_mask_int); + std::bitset<8> left_halfword((whole_byte & left_mask) >> 4); + //likewise, 15 represents 00001111 + uint8_t right_mask_int = 15; + std::bitset<8> right_mask(right_mask_int); + std::bitset<8> right_halfword((whole_byte & right_mask)); + + unsigned int left = left_halfword.to_ulong(); + unsigned int right = right_halfword.to_ulong(); + + //std::cout << "now have have " << left << " and " << right << '\n'; + + char a = halfword_to_hex_char(left); + char b = halfword_to_hex_char(right); + + std::string left_string(1, a); + std::string right_string(1, b); + + std::string final_byte = left_string + right_string; + + //std::string final_byte = halfword_to_hex_char(left) + "" + halfword_to_hex_char(right); + + return final_byte; + } +} //namespace omni diff --git a/hex_functions.h b/hex_functions.h new file mode 100644 index 0000000..47d9466 --- /dev/null +++ b/hex_functions.h @@ -0,0 +1,14 @@ +#ifndef HEX_OPERATIONS_H +#define HEX_OPERATIONS_H + +#include +#include +#include + +namespace omni +{ + char halfword_to_hex_char(unsigned int input); + std::string int_to_hex(unsigned int input); +} + +#endif //HEX_OPERATIONS_H