std::string LSBSoundCoder::GetMessageText( size_t _length ) { // Binary message BinaryString message; size_t bitsInMessage = _length * bitsInChar; // Read message for (size_t bitsRead = 0; bitsRead < bitsInMessage; ++bitsRead ) { // Add new char to message to write bits in if (bitsRead % bitsInChar == 0) message.push_back( CharBitset() ); // Bit bool bit; // If no space left to read bits - break if ( !GetBit(&bit) ) { assert(0&&"Can not get bit in GetMessageText()"); break; } // Save bit message.back()[bitsRead % bitsInChar] = bit; } // Result string std::string str; // Convert from binary to char for (size_t i = 0; i < message.size(); ++i) str += static_cast<char>( message[i].to_ulong() ); return str; }
void Database::Statement::bind(int parameter, const BinaryString &value) { if(!parameter) return; if(sqlite3_bind_blob(mStmt, parameter, value.data(), value.size(), SQLITE_TRANSIENT) != SQLITE_OK) throw DatabaseException(mDb, String("Unable to bind parameter ") + String::number(parameter)); }