From: Skullheadx Date: Thu, 21 Nov 2024 14:16:24 +0000 (-0500) Subject: add preceding zeros when decoding X-Git-Url: http://git.skullheadx.com/links.html?a=commitdiff_plain;h=46fb408e1bd64a3f9f97578ada5d08ebaa75eaa8;p=qrcodescanner.git add preceding zeros when decoding --- diff --git a/.DS_Store b/.DS_Store index 43b4569..5ccc96b 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/camera.cpp b/camera.cpp index 62b6a01..c595734 100644 --- a/camera.cpp +++ b/camera.cpp @@ -9,6 +9,7 @@ void print_codewords(std::vector &vec); void vec_xor(std::vector &v1, const std::vector v2); unsigned int distance(std::vector &v1, const std::vector &v2); unsigned int convert_uint(std::vector &vec); +std::string add_preceding_zeros(unsigned int n); void read_from_file(std::string filename, std::vector> &symbol); void retrieve_codewords(std::vector> &symbol, std::vector &codewords, bool is_upwards, std::size_t row, std::size_t col); void retrieve_special_codewords(std::vector> &symbol, std::vector &codewords, bool is_upwards, int row, int col); @@ -89,6 +90,18 @@ unsigned int convert_uint(std::vector &vec){ return result; } +std::string add_preceding_zeros(unsigned int n){ + std::string result = std::to_string(n); + if (result.size() == 1){ + result.insert(result.begin(), 0); + result.insert(result.begin(), 0); + } + else if (result.size() == 2){ + result.insert(result.begin(), 0); + } + return result; +} + std::vector get_format_info(std::vector> &symbol){ std::vector format_info(15,0); @@ -308,7 +321,7 @@ std::string get_input_data(std::vector &input_data, unsigned int character unsigned int data_length = character_count_indicator / 3 * 10; for (std::size_t i{0}; i < data_length; i += 10){ std::vector subvec(input_data.begin() + i, input_data.begin() + i + 10); - data += std::to_string(convert_uint(subvec)); + data += add_preceding_zeros(convert_uint(subvec)); } if (character_count_indicator % 3 == 1){ std::vector subvec(input_data.begin() + data_length, input_data.begin() + data_length + 4);