fork(1) download
  1. #include <iostream>
  2. #include <bitset>
  3.  
  4. using namespace std;
  5.  
  6. template<std::size_t num_bits>
  7. void readBits(istream& is, std::bitset<num_bits>& thebits)
  8. {
  9. thebits.reset();
  10. std::size_t total_bytes = num_bits / sizeof(unsigned char) + 1;
  11. std::size_t bit_pos = 0;
  12. for(std::size_t i = 0;
  13. is &&
  14. i < total_bytes &&
  15. bit_pos < num_bits;
  16. ++i)
  17. {
  18. unsigned char currentByte = 0;
  19. if(is >> currentByte)
  20. {
  21. for(int currentBit = 0;
  22. currentBit < sizeof(unsigned char) &&
  23. bit_pos < num_bits;
  24. ++currentBit, ++bit_pos)
  25. {
  26. thebits[bit_pos] = currentByte & (0x80 >> currentBit) > 0;
  27. }
  28. }
  29. }
  30. }
  31.  
  32. int main() {
  33. std::bitset<4> nibble;
  34. std::bitset<8> byte;
  35. std::bitset<23> number_of_bits;
  36.  
  37. readBits(std::cin,nibble);
  38. readBits(std::cin,byte);
  39. readBits(std::cin,number_of_bits);
  40.  
  41. std::cout << nibble << byte << number_of_bits << std::endl;
  42.  
  43. return 0;
  44. }
Success #stdin #stdout 0s 3480KB
stdin
gtzugzui
stdout
10010000110100000000000000000000000