Skip to content

Instantly share code, notes, and snippets.

@soachishti
Last active August 29, 2015 14:20
Show Gist options
  • Save soachishti/2f0db4f1ad08448d9c2d to your computer and use it in GitHub Desktop.
Save soachishti/2f0db4f1ad08448d9c2d to your computer and use it in GitHub Desktop.
Text to Binary Viewer (Colored)
// http://stackoverflow.com/questions/10184178/fastest-way-to-convert-string-to-binary
#include <iostream>
#include <bitset>
#include <string>
#include <windows.h>
using namespace std;
enum Color { DARKBLUE = 1, DARKGREEN, DARKTEAL, DARKRED, DARKPINK, DARKYELLOW, GRAY, DARKGRAY, BLUE, GREEN, TEAL, RED, PINK, YELLOW, WHITE};
void SetColor(Color c) {
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void randColor() {
Color color = static_cast<Color>(rand() % WHITE + 1);
SetColor(color);
}
void gotoxy(SHORT x, SHORT y)
{
static HANDLE h = NULL;
if(!h)
h = GetStdHandle(STD_OUTPUT_HANDLE);
COORD c = { x, y };
SetConsoleCursorPosition(h,c);
}
int main ()
{
//string str = "Syed Owais Ali Chishti";
string str = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam ornare augue vitae justo vestibulum facilisis. Fusce condimentum purus velit, condimentum pulvinar ipsum pellentesque eget. Sed tempus elementum volutpat. Aenean imperdiet, purus nec suscipit interdum, sapien neque tempor ex, at feugiat mi purus ut justo. Donec iaculis posuere purus vitae efficitur. Pellentesque iaculis quam a metus pulvinar eleifend. Phasellus tempus, tellus id finibus ornare, quam purus bibendum nulla, a finibus dolor tortor quis lorem. Suspendisse mollis ornare lectus.Etiam vitae luctus nisl, sit amet pulvinar tellus. Nullam nec euismod sem, sit amet pharetra risus. Mauris ac felis sem. Donec in consequat arcu. Maecenas vulputate dolor vitae sem consectetur sollicitudin. Donec sagittis semper sapien id consequat. Proin mollis nisi sed tempus feugiat. Etiam porttitor egestas justo et pretium. Nam luctus, nisi ac tristique interdum, tortor nunc sagittis turpis, eu condimentum diam ipsum dignissim quam. Mauris fringilla urna nec a gue mollis aliquam. Fusce cursus tortor est, ac mollis leo posuere at. Praesent mollis justo nibh, vitae porta augue elementum at. Quisque sit amet cursus metus.Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec porta tortor sit amet nibh tempor, id tempus tortor mattis. Etiam mattis orci tincidunt lacus lacinia imperdiet. Ut efficitur, nibh id gravida ultricies, tortor sem porttitor dolor, ac ornare arcu eros non arcu. Sed vitae justo pharetra, consequat neque sit amet, laoreet neque. Fusce vel quam vitae velit fringilla placerat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.Cras porttitor congue neque elementum egestas. Integer lobortis lacus vel dui volutpat, non efficitur enim aliquet. Suspendisse tempus commodo dolor a volutpat. Praesent imperdiet risus nibh. Integer gravida ante vel nibh posuere pretium. Aenean molestie luctus velit sit amet convallis. Aenean enim lacus, dignissim id velit eu, lacinia fermentm justo. Nam ac efficitur magna, vitae tempor lacus. Fusce at leo at ante ullamcorper commodo nec et ex. Aliquam velit lorem, feugiat sit amet purus eget, pulvinar efficitur nibh. Mauris ac euismod tortor. Cras non efficitur erat.Nulla fermentum tempus metus quis vulputate. Proin tempor elementum vehicula. Nulla at sem nisl. Vestibulum accumsan quam nec ultricies dapibus. Integer vel pellentesque ex, vitae bibendum tellus. Phasellus rhoncus magna nec gravida pulvinar. Nullam magna massa, varius id sodales eget, pulvinar sit amet dolor. Vivamus congue eleifend laoreet. Sed vel fringilla lectus. Cras pulvinar lorem id volutpat interdum. Vivamus dolor velit, gravida id pellentesque sit amet, finibus ut ligula. Aenean dui dui, interdum varius neque quis, mollis lobortis magna. Integer venenatis egestas justo sit amet pretium. Suspendisse tristique ligula vel dapibus mattis.";
const int bitSize = 8;
int y = 0,
last = 0,
limit = 32,
size = str.size();
// Result within screen
while(true)
{
// SPACE BINARY SIZE " | " space and ascii
if((limit + (bitSize * limit) + (limit + 3)) >= 80) {
--limit;
}
else {
break;
}
}
for (int i = 1;i < size; i++) {
randColor();
cout << bitset<bitSize>(str[i-1]) << " ";
if (i % limit == 0 || i == size-1)
{
if (i == size-1) i = size;
gotoxy(80-(limit+3+2), y++);
SetColor(WHITE);
cout << " | ";
for (int j = last; j < i;j++) cout << str[j];
cout << endl;
last = i;
gotoxy(0, y);
}
}
system("pause");
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment