diff options
| author | David Skoland <davidskoland@gmail.com> | 2017-01-05 22:17:36 +0100 |
|---|---|---|
| committer | David Skoland <davidskoland@gmail.com> | 2017-01-05 22:17:36 +0100 |
| commit | 4fc1abe8cbe2634b3e2186882b68c2e362c071c5 (patch) | |
| tree | 47d7993431331485f40eceef4e1f601562677d24 | |
| parent | f4aa19122e2ce19ed01d74f169de90bd20a338ff (diff) | |
not going to list all the things i did
| -rw-r--r-- | encryption_functions.cpp | 0 | ||||
| -rw-r--r-- | encryption_functions.h | 4 | ||||
| -rw-r--r-- | hex_functions.cpp | 83 | ||||
| -rw-r--r-- | hex_functions.h | 14 |
4 files changed, 101 insertions, 0 deletions
diff --git a/encryption_functions.cpp b/encryption_functions.cpp new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/encryption_functions.cpp diff --git a/encryption_functions.h b/encryption_functions.h new file mode 100644 index 00000000..0a9cf2e8 --- /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 00000000..9b1222ed --- /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 00000000..47d9466b --- /dev/null +++ b/hex_functions.h @@ -0,0 +1,14 @@ +#ifndef HEX_OPERATIONS_H +#define HEX_OPERATIONS_H + +#include <bitset> +#include <cstdint> +#include <iostream> + +namespace omni +{ + char halfword_to_hex_char(unsigned int input); + std::string int_to_hex(unsigned int input); +} + +#endif //HEX_OPERATIONS_H |
