00001 #ifndef ots_BitManipulator_h 00002 #define ots_BitManipulator_h 00003 00004 #include <stdint.h> 00005 #include <string> 00006 00007 namespace ots 00008 { 00009 00010 class BitManipulator 00011 { 00012 public: 00013 BitManipulator (void); 00014 ~BitManipulator(void); 00015 static uint64_t insertBits (uint64_t& data, uint64_t value, unsigned int startBit, unsigned int numberOfBits); 00016 static uint64_t insertBits (std::string& data, uint64_t value, unsigned int startBit, unsigned int numberOfBits); 00017 static uint64_t reverseBits (uint64_t data, unsigned int startBit, unsigned int numberOfBits); 00018 static uint32_t insertBits (uint32_t& data, uint32_t value, unsigned int startBit, unsigned int numberOfBits); 00019 static uint32_t insertBits (std::string& data, uint32_t value, unsigned int startBit, unsigned int numberOfBits); 00020 static uint32_t reverseBits (uint32_t data, unsigned int startBit, unsigned int numberOfBits); 00021 static uint32_t readBits (uint32_t data, unsigned int startBit, unsigned int numberOfBits); 00022 }; 00023 00024 } 00025 00026 #endif