aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Skoland <davidskoland@gmail.com>2017-01-05 22:17:36 +0100
committerDavid Skoland <davidskoland@gmail.com>2017-01-05 22:17:36 +0100
commit4fc1abe8cbe2634b3e2186882b68c2e362c071c5 (patch)
tree47d7993431331485f40eceef4e1f601562677d24
parentf4aa19122e2ce19ed01d74f169de90bd20a338ff (diff)
not going to list all the things i did
-rw-r--r--encryption_functions.cpp0
-rw-r--r--encryption_functions.h4
-rw-r--r--hex_functions.cpp83
-rw-r--r--hex_functions.h14
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