fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. template<typename T>
  6. void bit_dump(T const& arg)
  7. {
  8. static char const *bits[] =
  9. {
  10. "00000000","00000001","00000010","00000011",
  11. "00000100","00000101","00000110","00000111",
  12. "00001000","00001001","00001010","00001011",
  13. "00001100","00001101","00001110","00001111",
  14. "00010000","00010001","00010010","00010011",
  15. "00010100","00010101","00010110","00010111",
  16. "00011000","00011001","00011010","00011011",
  17. "00011100","00011101","00011110","00011111",
  18. "00100000","00100001","00100010","00100011",
  19. "00100100","00100101","00100110","00100111",
  20. "00101000","00101001","00101010","00101011",
  21. "00101100","00101101","00101110","00101111",
  22. "00110000","00110001","00110010","00110011",
  23. "00110100","00110101","00110110","00110111",
  24. "00111000","00111001","00111010","00111011",
  25. "00111100","00111101","00111110","00111111",
  26. "01000000","01000001","01000010","01000011",
  27. "01000100","01000101","01000110","01000111",
  28. "01001000","01001001","01001010","01001011",
  29. "01001100","01001101","01001110","01001111",
  30. "01010000","01010001","01010010","01010011",
  31. "01010100","01010101","01010110","01010111",
  32. "01011000","01011001","01011010","01011011",
  33. "01011100","01011101","01011110","01011111",
  34. "01100000","01100001","01100010","01100011",
  35. "01100100","01100101","01100110","01100111",
  36. "01101000","01101001","01101010","01101011",
  37. "01101100","01101101","01101110","01101111",
  38. "01110000","01110001","01110010","01110011",
  39. "01110100","01110101","01110110","01110111",
  40. "01111000","01111001","01111010","01111011",
  41. "01111100","01111101","01111110","01111111",
  42. "10000000","10000001","10000010","10000011",
  43. "10000100","10000101","10000110","10000111",
  44. "10001000","10001001","10001010","10001011",
  45. "10001100","10001101","10001110","10001111",
  46. "10010000","10010001","10010010","10010011",
  47. "10010100","10010101","10010110","10010111",
  48. "10011000","10011001","10011010","10011011",
  49. "10011100","10011101","10011110","10011111",
  50. "10100000","10100001","10100010","10100011",
  51. "10100100","10100101","10100110","10100111",
  52. "10101000","10101001","10101010","10101011",
  53. "10101100","10101101","10101110","10101111",
  54. "10110000","10110001","10110010","10110011",
  55. "10110100","10110101","10110110","10110111",
  56. "10111000","10111001","10111010","10111011",
  57. "10111100","10111101","10111110","10111111",
  58. "11000000","11000001","11000010","11000011",
  59. "11000100","11000101","11000110","11000111",
  60. "11001000","11001001","11001010","11001011",
  61. "11001100","11001101","11001110","11001111",
  62. "11010000","11010001","11010010","11010011",
  63. "11010100","11010101","11010110","11010111",
  64. "11011000","11011001","11011010","11011011",
  65. "11011100","11011101","11011110","11011111",
  66. "11100000","11100001","11100010","11100011",
  67. "11100100","11100101","11100110","11100111",
  68. "11101000","11101001","11101010","11101011",
  69. "11101100","11101101","11101110","11101111",
  70. "11110000","11110001","11110010","11110011",
  71. "11110100","11110101","11110110","11110111",
  72. "11111000","11111001","11111010","11111011",
  73. "11111100","11111101","11111110","11111111"
  74. };
  75.  
  76. // universal byte dump
  77. unsigned char const *beg = reinterpret_cast<unsigned char const*>(&arg);
  78. unsigned char const *end = beg + sizeof arg;
  79. while (beg != end)
  80. std::cout << bits[*beg++] << ' ';
  81. std::cout << "\n\n";
  82. }
  83.  
  84. int main()
  85. {
  86. bit_dump(12345.6789); // dumps a double
  87. bit_dump(63); // dumps an int
  88. bit_dump("test"); // dumps a char (&)[5]
  89.  
  90.  
  91. // simple variables
  92. float f = 2.0;
  93. bit_dump(f); // dumps a float
  94. char text[] = "test";
  95. bit_dump(text); // dumps a char (&)[5]
  96.  
  97. // and PODs
  98. struct Foo {
  99. int x;
  100. int y;
  101. } foo { 100, 101 };
  102. bit_dump(foo);
  103.  
  104. // even non PODS (but be careful!)
  105. struct Bar
  106. {
  107. short data;
  108. std::string s;
  109. std::vector<int> v;
  110. Foo foo;
  111. } bar { 10, "non-pod", {1,2,3}, foo};
  112. bit_dump(bar);
  113. }
  114.  
Success #stdin #stdout 0s 3484KB
stdin
Standard input is empty
stdout
10100001 11111000 00110001 11100110 11010110 00011100 11001000 01000000 

00111111 00000000 00000000 00000000 

01110100 01100101 01110011 01110100 00000000 

00000000 00000000 00000000 01000000 

01110100 01100101 01110011 01110100 00000000 

01100100 00000000 00000000 00000000 01100101 00000000 00000000 00000000 

00001010 00000000 00000000 00000000 00010100 10000000 10101000 00001001 00100000 10000000 10101000 00001001 00101100 10000000 10101000 00001001 00101100 10000000 10101000 00001001 01100100 00000000 00000000 00000000 01100101 00000000 00000000 00000000